GNU Bison XML Automaton Report

input grammar: cplusplus.y

Table of Contents

Reductions

Nonterminals useless in grammar

Terminals unused in grammar

Rules useless in grammar

Conflicts

State 0 conflicts: 41 shift/reduce, 3 reduce/reduce State 2 conflicts: 39 shift/reduce, 3 reduce/reduce State 4 conflicts: 1 reduce/reduce State 10 conflicts: 1 shift/reduce State 22 conflicts: 3 shift/reduce, 1 reduce/reduce State 23 conflicts: 1 shift/reduce State 25 conflicts: 1 shift/reduce State 50 conflicts: 36 shift/reduce, 3 reduce/reduce State 51 conflicts: 8 shift/reduce, 5 reduce/reduce State 54 conflicts: 3 shift/reduce State 58 conflicts: 3 shift/reduce, 2 reduce/reduce State 59 conflicts: 3 shift/reduce State 61 conflicts: 40 shift/reduce, 3 reduce/reduce State 63 conflicts: 1 shift/reduce State 75 conflicts: 1 reduce/reduce State 89 conflicts: 1 shift/reduce, 1 reduce/reduce State 96 conflicts: 100 reduce/reduce State 101 conflicts: 39 shift/reduce, 3 reduce/reduce State 115 conflicts: 39 shift/reduce, 3 reduce/reduce State 117 conflicts: 61 reduce/reduce State 119 conflicts: 39 shift/reduce, 3 reduce/reduce State 120 conflicts: 5 shift/reduce, 1 reduce/reduce State 122 conflicts: 1 shift/reduce State 125 conflicts: 1 shift/reduce State 130 conflicts: 2 shift/reduce State 133 conflicts: 1 shift/reduce, 1 reduce/reduce State 135 conflicts: 2 shift/reduce State 136 conflicts: 40 shift/reduce, 3 reduce/reduce State 138 conflicts: 1 shift/reduce State 142 conflicts: 1 shift/reduce State 147 conflicts: 2 shift/reduce State 148 conflicts: 39 shift/reduce, 3 reduce/reduce State 153 conflicts: 3 shift/reduce State 159 conflicts: 3 shift/reduce State 168 conflicts: 2 shift/reduce State 169 conflicts: 3 shift/reduce State 172 conflicts: 1 shift/reduce, 1 reduce/reduce State 173 conflicts: 1 shift/reduce State 175 conflicts: 3 shift/reduce State 176 conflicts: 3 shift/reduce, 1 reduce/reduce State 178 conflicts: 1 shift/reduce State 179 conflicts: 1 shift/reduce State 180 conflicts: 1 reduce/reduce State 181 conflicts: 2 shift/reduce State 187 conflicts: 1 shift/reduce State 191 conflicts: 1 shift/reduce State 196 conflicts: 39 shift/reduce, 3 reduce/reduce State 199 conflicts: 1 shift/reduce State 201 conflicts: 100 reduce/reduce State 203 conflicts: 1 shift/reduce State 208 conflicts: 2 shift/reduce State 214 conflicts: 39 shift/reduce, 3 reduce/reduce State 219 conflicts: 39 shift/reduce, 3 reduce/reduce State 226 conflicts: 1 shift/reduce State 228 conflicts: 1 shift/reduce State 229 conflicts: 1 shift/reduce State 233 conflicts: 1 shift/reduce State 238 conflicts: 2 reduce/reduce State 245 conflicts: 2 shift/reduce State 247 conflicts: 1 shift/reduce State 248 conflicts: 2 shift/reduce State 251 conflicts: 2 shift/reduce State 256 conflicts: 2 shift/reduce State 257 conflicts: 2 shift/reduce State 258 conflicts: 2 shift/reduce State 265 conflicts: 2 shift/reduce State 266 conflicts: 2 shift/reduce State 271 conflicts: 2 shift/reduce State 293 conflicts: 2 shift/reduce State 295 conflicts: 1 shift/reduce State 297 conflicts: 1 shift/reduce State 299 conflicts: 1 shift/reduce, 1 reduce/reduce State 302 conflicts: 1 shift/reduce State 308 conflicts: 1 shift/reduce State 311 conflicts: 1 reduce/reduce State 313 conflicts: 1 shift/reduce, 97 reduce/reduce State 318 conflicts: 2 shift/reduce State 338 conflicts: 1 shift/reduce State 344 conflicts: 1 shift/reduce State 345 conflicts: 1 shift/reduce State 346 conflicts: 2 shift/reduce State 347 conflicts: 1 shift/reduce State 349 conflicts: 2 shift/reduce State 352 conflicts: 2 shift/reduce State 353 conflicts: 4 shift/reduce State 356 conflicts: 1 shift/reduce State 363 conflicts: 1 shift/reduce State 366 conflicts: 2 shift/reduce State 375 conflicts: 5 shift/reduce, 2 reduce/reduce State 382 conflicts: 3 shift/reduce, 1 reduce/reduce State 396 conflicts: 2 shift/reduce State 397 conflicts: 2 shift/reduce State 398 conflicts: 2 shift/reduce State 405 conflicts: 3 shift/reduce State 412 conflicts: 1 shift/reduce State 416 conflicts: 1 shift/reduce State 421 conflicts: 2 shift/reduce State 424 conflicts: 3 shift/reduce State 426 conflicts: 3 reduce/reduce State 427 conflicts: 1 shift/reduce State 432 conflicts: 24 shift/reduce, 3 reduce/reduce State 433 conflicts: 2 shift/reduce, 1 reduce/reduce State 434 conflicts: 1 shift/reduce State 438 conflicts: 5 shift/reduce, 1 reduce/reduce State 441 conflicts: 2 shift/reduce State 442 conflicts: 1 shift/reduce State 443 conflicts: 5 shift/reduce, 1 reduce/reduce State 450 conflicts: 1 shift/reduce State 451 conflicts: 2 shift/reduce State 456 conflicts: 2 shift/reduce State 458 conflicts: 32 shift/reduce State 464 conflicts: 1 shift/reduce State 498 conflicts: 1 shift/reduce State 513 conflicts: 1 shift/reduce State 518 conflicts: 1 shift/reduce State 520 conflicts: 6 shift/reduce State 525 conflicts: 100 reduce/reduce State 530 conflicts: 2 shift/reduce State 531 conflicts: 2 shift/reduce State 532 conflicts: 2 shift/reduce State 533 conflicts: 2 shift/reduce State 534 conflicts: 2 shift/reduce State 538 conflicts: 2 shift/reduce State 540 conflicts: 2 shift/reduce State 543 conflicts: 2 shift/reduce State 544 conflicts: 1 shift/reduce State 545 conflicts: 2 shift/reduce State 546 conflicts: 2 shift/reduce State 547 conflicts: 2 shift/reduce State 548 conflicts: 2 shift/reduce State 549 conflicts: 2 shift/reduce State 550 conflicts: 2 shift/reduce State 551 conflicts: 2 shift/reduce State 552 conflicts: 2 shift/reduce State 554 conflicts: 2 shift/reduce State 556 conflicts: 5 shift/reduce, 1 reduce/reduce State 561 conflicts: 2 shift/reduce State 562 conflicts: 2 shift/reduce State 574 conflicts: 2 shift/reduce State 575 conflicts: 2 shift/reduce State 576 conflicts: 2 shift/reduce State 577 conflicts: 2 shift/reduce State 578 conflicts: 2 shift/reduce State 579 conflicts: 2 shift/reduce State 581 conflicts: 2 shift/reduce State 582 conflicts: 2 shift/reduce State 583 conflicts: 2 shift/reduce State 584 conflicts: 2 shift/reduce State 585 conflicts: 2 shift/reduce State 590 conflicts: 2 shift/reduce State 591 conflicts: 2 shift/reduce State 592 conflicts: 2 shift/reduce State 593 conflicts: 2 shift/reduce State 594 conflicts: 2 shift/reduce State 595 conflicts: 2 shift/reduce State 596 conflicts: 2 shift/reduce State 600 conflicts: 2 shift/reduce State 616 conflicts: 39 shift/reduce, 3 reduce/reduce State 628 conflicts: 2 shift/reduce State 638 conflicts: 4 shift/reduce State 645 conflicts: 2 shift/reduce State 647 conflicts: 3 shift/reduce, 1 reduce/reduce State 648 conflicts: 3 shift/reduce State 649 conflicts: 1 shift/reduce State 652 conflicts: 1 shift/reduce State 658 conflicts: 2 reduce/reduce State 661 conflicts: 1 shift/reduce State 674 conflicts: 2 shift/reduce State 675 conflicts: 1 shift/reduce State 680 conflicts: 2 shift/reduce State 683 conflicts: 2 shift/reduce State 695 conflicts: 2 shift/reduce State 696 conflicts: 1 shift/reduce State 698 conflicts: 2 shift/reduce State 700 conflicts: 2 shift/reduce State 703 conflicts: 1 shift/reduce State 707 conflicts: 1 reduce/reduce State 709 conflicts: 1 shift/reduce State 711 conflicts: 2 shift/reduce, 1 reduce/reduce State 714 conflicts: 5 shift/reduce State 721 conflicts: 2 shift/reduce State 723 conflicts: 2 shift/reduce State 725 conflicts: 3 shift/reduce, 2 reduce/reduce State 726 conflicts: 1 shift/reduce State 761 conflicts: 2 shift/reduce State 764 conflicts: 2 shift/reduce State 770 conflicts: 1 shift/reduce State 771 conflicts: 1 shift/reduce State 777 conflicts: 2 shift/reduce State 778 conflicts: 100 reduce/reduce State 781 conflicts: 6 shift/reduce State 783 conflicts: 2 shift/reduce State 794 conflicts: 2 shift/reduce State 796 conflicts: 2 shift/reduce State 798 conflicts: 2 shift/reduce State 810 conflicts: 1 shift/reduce State 813 conflicts: 37 shift/reduce, 3 reduce/reduce State 823 conflicts: 1 reduce/reduce State 824 conflicts: 1 shift/reduce State 842 conflicts: 1 reduce/reduce State 848 conflicts: 39 shift/reduce, 3 reduce/reduce State 868 conflicts: 1 shift/reduce State 883 conflicts: 1 reduce/reduce State 885 conflicts: 2 shift/reduce, 2 reduce/reduce State 894 conflicts: 1 shift/reduce, 1 reduce/reduce State 901 conflicts: 2 shift/reduce State 906 conflicts: 2 shift/reduce State 926 conflicts: 1 shift/reduce State 927 conflicts: 2 shift/reduce State 929 conflicts: 2 shift/reduce State 936 conflicts: 4 shift/reduce State 939 conflicts: 5 shift/reduce State 945 conflicts: 1 shift/reduce State 955 conflicts: 1 shift/reduce State 963 conflicts: 1 shift/reduce State 964 conflicts: 2 shift/reduce State 965 conflicts: 2 shift/reduce State 970 conflicts: 2 shift/reduce State 982 conflicts: 2 shift/reduce State 984 conflicts: 2 shift/reduce State 985 conflicts: 1 shift/reduce State 986 conflicts: 3 shift/reduce State 987 conflicts: 2 shift/reduce State 989 conflicts: 2 shift/reduce State 992 conflicts: 36 shift/reduce, 3 reduce/reduce State 993 conflicts: 2 shift/reduce State 998 conflicts: 37 shift/reduce, 3 reduce/reduce State 1001 conflicts: 2 shift/reduce State 1009 conflicts: 39 shift/reduce, 3 reduce/reduce State 1029 conflicts: 1 reduce/reduce State 1039 conflicts: 1 shift/reduce State 1045 conflicts: 3 shift/reduce State 1048 conflicts: 1 shift/reduce State 1050 conflicts: 1 shift/reduce State 1051 conflicts: 1 shift/reduce State 1071 conflicts: 4 shift/reduce State 1072 conflicts: 2 shift/reduce State 1073 conflicts: 2 shift/reduce State 1077 conflicts: 2 shift/reduce State 1080 conflicts: 1 shift/reduce, 1 reduce/reduce State 1083 conflicts: 27 shift/reduce, 3 reduce/reduce State 1088 conflicts: 2 shift/reduce State 1089 conflicts: 2 shift/reduce State 1090 conflicts: 2 shift/reduce State 1091 conflicts: 2 shift/reduce State 1096 conflicts: 2 shift/reduce State 1100 conflicts: 2 shift/reduce State 1104 conflicts: 3 shift/reduce State 1106 conflicts: 2 shift/reduce State 1111 conflicts: 2 reduce/reduce State 1112 conflicts: 1 shift/reduce State 1113 conflicts: 2 shift/reduce State 1117 conflicts: 37 shift/reduce, 3 reduce/reduce State 1121 conflicts: 2 shift/reduce State 1123 conflicts: 2 shift/reduce State 1158 conflicts: 2 shift/reduce State 1160 conflicts: 1 shift/reduce State 1163 conflicts: 2 shift/reduce State 1167 conflicts: 1 shift/reduce, 2 reduce/reduce State 1176 conflicts: 39 shift/reduce, 3 reduce/reduce State 1189 conflicts: 1 shift/reduce State 1192 conflicts: 2 shift/reduce State 1197 conflicts: 37 shift/reduce, 3 reduce/reduce State 1202 conflicts: 37 shift/reduce, 3 reduce/reduce State 1204 conflicts: 19 shift/reduce, 3 reduce/reduce State 1206 conflicts: 37 shift/reduce, 39 reduce/reduce State 1216 conflicts: 69 shift/reduce, 41 reduce/reduce State 1238 conflicts: 1 shift/reduce State 1239 conflicts: 1 shift/reduce State 1257 conflicts: 2 shift/reduce State 1263 conflicts: 2 shift/reduce State 1265 conflicts: 19 shift/reduce, 39 reduce/reduce State 1270 conflicts: 37 shift/reduce, 3 reduce/reduce State 1271 conflicts: 69 shift/reduce, 41 reduce/reduce State 1274 conflicts: 19 shift/reduce, 3 reduce/reduce State 1283 conflicts: 1 shift/reduce State 1286 conflicts: 1 shift/reduce State 1289 conflicts: 1 shift/reduce State 1291 conflicts: 3 shift/reduce State 1292 conflicts: 37 shift/reduce, 3 reduce/reduce State 1293 conflicts: 2 shift/reduce State 1296 conflicts: 2 shift/reduce State 1299 conflicts: 19 shift/reduce, 3 reduce/reduce State 1300 conflicts: 1 shift/reduce State 1303 conflicts: 2 shift/reduce State 1307 conflicts: 1 shift/reduce State 1311 conflicts: 2 shift/reduce State 1312 conflicts: 3 shift/reduce State 1313 conflicts: 2 shift/reduce State 1315 conflicts: 37 shift/reduce, 3 reduce/reduce State 1316 conflicts: 37 shift/reduce, 3 reduce/reduce State 1317 conflicts: 4 shift/reduce State 1322 conflicts: 1 reduce/reduce State 1323 conflicts: 1 reduce/reduce State 1328 conflicts: 37 shift/reduce, 3 reduce/reduce State 1335 conflicts: 37 shift/reduce, 3 reduce/reduce State 1337 conflicts: 37 shift/reduce, 3 reduce/reduce State 1338 conflicts: 1 shift/reduce State 1342 conflicts: 37 shift/reduce, 3 reduce/reduce

Grammar

0 $acceptresult $end 1 COMMA-opt → %empty 2 | "," 3 CONSTEXPR-opt → %empty 4 | "constexpr" 5 ELLIPSIS-opt → %empty 6 | "..." 7 EXPORT-opt → %empty 8 | "export" 9 EXTERN-opt → %empty 10 | "extern" 11 IDENTIFIER-opt → %empty 12 | IDENTIFIER 13 INLINE-opt → %empty 14 | "inline" 15 NOEXCEPT-opt → %empty 16 | "noexcept" 17 NOT-opt → %empty 18 | "!" 19 SCOPE-opt → %empty 20 | "::" 21 TEMPLATE-opt → %empty 22 | "template" 23 THIS-opt → %empty 24 | "this" 25 TYPENAME-opt → %empty 26 | "typename" 27 VIRTUAL-opt → %empty 28 | "virtual" 29 abstract-declaratorptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt → %empty 33 | abstract-declarator 34 abstract-pack-declaratornoptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 36 access-specifier"private" 37 | "protected" 38 | "public" 39 access-specifier-opt → %empty 40 | access-specifier 41 additive-expressionmultiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expressionequality-expression 48 | and-expression "&" equality-expression 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 50 assignment-expressionconditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt → %empty 55 | assignment-expression 56 assignment-operator"=" 57 | "*=" 58 | "/=" 59 | "%=" 60 | "+=" 61 | "-=" 62 | ">>=" 63 | "<<=" 64 | "&=" 65 | "^=" 66 | "|=" 67 attributeattribute-token attribute-argument-clause-opt 68 attribute-argument-clause"(" balanced-token-seq-opt ")" 69 attribute-argument-clause-opt → %empty 70 | attribute-argument-clause 71 attribute-declarationattribute-specifier-seq ";" 72 attribute-listattribute-opt 73 | attribute-list "," attribute-opt 74 | attribute "..." 75 | attribute-list "," attribute "..." 76 attribute-namespaceIDENTIFIER 77 attribute-opt → %empty 78 | attribute 79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → %empty 84 | attribute-specifier-seq 85 attribute-tokenIDENTIFIER 86 | attribute-scoped-token 87 attribute-using-prefix"using" attribute-namespace ":" 88 attribute-using-prefix-opt → %empty 89 | attribute-using-prefix 90 await-expression"co_await" cast-expression 91 balanced-token"(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seqbalanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt → %empty 98 | balanced-token-seq 99 base-clause":" base-specifier-list 100 base-clause-opt → %empty 101 | base-clause 102 base-specifierattribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-listbase-specifier ELLIPSIS-opt 106 | base-specifier-list "," base-specifier ELLIPSIS-opt 107 block-declarationsimple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 116 boolean-literalBOOLEAN_LITERAL 117 brace-or-equal-initializer"=" initializer-clause 118 | braced-init-list 119 brace-or-equal-initializer-opt → %empty 120 | brace-or-equal-initializer 121 braced-init-list"{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 124 capturesimple-capture 125 | init-capture 126 capture-default"&" 127 | "=" 128 capture-listcapture 129 | capture-list "," capture 130 cast-expressionunary-expression 131 | "(" type-id ")" cast-expression 132 character-literalCHARACTER_LITERAL 133 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 135 class-head-namenested-name-specifier-opt class-name 136 class-key"class" 137 | "struct" 138 | "union" 139 class-nameIDENTIFIER 140 | simple-template-id 141 class-or-decltypenested-name-specifier-opt type-name 142 | nested-name-specifier "template" simple-template-id 143 | decltype-specifier 144 class-specifierclass-head "{" member-specification-opt "}" 145 class-virt-specifier"final" 146 class-virt-specifier-opt → %empty 147 | class-virt-specifier 148 compare-expressionshift-expression 149 | compare-expression "<=>" shift-expression 150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 151 compound-statement"{" statement-seq-opt "}" 152 concept-definition"concept" concept-name "=" constraint-expression ";" 153 concept-nameIDENTIFIER 154 conditionexpression 155 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 condition-opt → %empty 157 | condition 158 conditional-expressionlogical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expressionconditional-expression 161 constant-expression-opt → %empty 162 | constant-expression 163 constraint-expressionlogical-or-expression 164 constraint-logical-and-expressionprimary-expression 165 | constraint-logical-and-expression "&&" primary-expression 166 constraint-logical-or-expressionconstraint-logical-and-expression 167 | constraint-logical-or-expression "||" constraint-logical-and-expression 168 conversion-declaratorptr-operator conversion-declarator-opt 169 conversion-declarator-opt → %empty 170 | conversion-declarator 171 conversion-function-id"operator" conversion-type-id 172 conversion-type-idtype-specifier-seq conversion-declarator-opt 173 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" 174 ctor-initializer":" mem-initializer-list 175 ctor-initializer-opt → %empty 176 | ctor-initializer 177 cv-qualifier"const" 178 | "volatile" 179 cv-qualifier-seqcv-qualifier cv-qualifier-seq-opt 180 cv-qualifier-seq-opt → %empty 181 | cv-qualifier-seq 182 decl-specifierstorage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seqdecl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 193 decl-specifier-seq-opt → %empty 194 | decl-specifier-seq 195 declarationblock-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seqdeclaration 209 | declaration-seq declaration 210 declaration-seq-opt → %empty 211 | declaration-seq 212 declaration-statementblock-declaration 213 declaratorptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-idELLIPSIS-opt id-expression 216 decltype-specifier"decltype" "(" expression ")" 217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 218 defining-type-iddefining-type-specifier-seq abstract-declarator-opt 219 defining-type-specifiertype-specifier 220 | class-specifier 221 | enum-specifier 222 defining-type-specifier-seqdefining-type-specifier attribute-specifier-seq-opt 223 | defining-type-specifier defining-type-specifier-seq 224 delete-expressionSCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 226 designated-initializer-clausedesignator brace-or-equal-initializer 227 designated-initializer-listdesignated-initializer-clause 228 | designated-initializer-list "," designated-initializer-clause 229 designator"." IDENTIFIER 230 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration";" 236 enclosing-namespace-specifierIDENTIFIER 237 | enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 238 enum-base":" type-specifier-seq 239 enum-base-opt → %empty 240 | enum-base 241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 242 enum-head-namenested-name-specifier-opt IDENTIFIER 243 enum-head-name-opt → %empty 244 | enum-head-name 245 enum-key"enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-nameIDENTIFIER 249 enum-specifierenum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 251 enumeratorIDENTIFIER attribute-specifier-seq-opt 252 enumerator-definitionenumerator 253 | enumerator "=" constant-expression 254 enumerator-listenumerator-definition 255 | enumerator-list "," enumerator-definition 256 enumerator-list-opt → %empty 257 | enumerator-list 258 equality-expressionrelational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 261 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 262 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 263 | "..." 264 exclusive-or-expressionand-expression 265 | exclusive-or-expression "^" and-expression 266 explicit-instantiationEXTERN-opt "template" declaration 267 explicit-specialization"template" "<" ">" declaration 268 explicit-specifier"explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt → %empty 271 | explicit-specifier 272 export-declaration"export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 275 expr-or-braced-init-listexpression 276 | braced-init-list 277 expr-or-braced-init-list-opt → %empty 278 | expr-or-braced-init-list 279 expressionassignment-expression 280 | expression "," assignment-expression 281 expression-listinitializer-list 282 expression-list-opt → %empty 283 | expression-list 284 expression-opt → %empty 285 | expression 286 expression-statementexpression-opt ";" 287 floating-point-literalFLOATING_POINT_LITERAL 288 fold-expression"(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 291 fold-operator"+" 292 | "-" 293 | "*" 294 | "/" 295 | "%" 296 | "^" 297 | "&" 298 | "|" 299 | "<<" 300 | ">>" 301 | "+=" 302 | "-=" 303 | "*=" 304 | "/=" 305 | "%=" 306 | "^=" 307 | "&=" 308 | "|=" 309 | "<<=" 310 | ">>=" 311 | "=" 312 | "==" 313 | "!=" 314 | "<" 315 | ">" 316 | "<=" 317 | ">=" 318 | "&&" 319 | "||" 320 | "," 321 | ".*" 322 | "->*" 323 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 324 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 325 for-range-initializerexpr-or-braced-init-list 326 function-bodyctor-initializer-opt compound-statement 327 | function-try-block 328 | "=" "default" ";" 329 | "=" "delete" ";" 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier"virtual" 333 | explicit-specifier 334 function-try-block"try" ctor-initializer-opt compound-statement handler-seq 335 global-module-fragment"module" ";" declaration-seq-opt 336 global-module-fragment-opt → %empty 337 | global-module-fragment 338 handler"catch" "(" exception-declaration ")" compound-statement 339 handler-seqhandler handler-seq-opt 340 handler-seq-opt → %empty 341 | handler-seq 342 header-nameHEADER_NAME 343 id-expressionunqualified-id 344 | qualified-id 345 identifier-listIDENTIFIER 346 | identifier-list "," IDENTIFIER 347 inclusive-or-expressionexclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 349 init-captureELLIPSIS-opt IDENTIFIER initializer 350 | "&" ELLIPSIS-opt IDENTIFIER initializer 351 init-declaratordeclarator initializer-opt 352 | declarator requires-clause 353 init-declarator-listinit-declarator 354 | init-declarator-list "," init-declarator 355 init-declarator-list-opt → %empty 356 | init-declarator-list 357 init-statementexpression-statement 358 | simple-declaration 359 | alias-declaration 360 init-statement-opt → %empty 361 | init-statement 362 initializerbrace-or-equal-initializer 363 | "(" expression-list ")" 364 initializer-clauseassignment-expression 365 | braced-init-list 366 initializer-listinitializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 368 initializer-opt → %empty 369 | initializer 370 integer-literalINTEGER_LITERAL 371 iteration-statement"while" "(" condition ")" statement 372 | "do" statement "while" "(" expression ")" ";" 373 | "for" "(" init-statement condition-opt ";" expression-opt ")" statement 374 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 375 jump-statement"break" ";" 376 | "continue" ";" 377 | "return" expr-or-braced-init-list-opt ";" 378 | coroutine-return-statement 379 | "goto" IDENTIFIER ";" 380 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 383 lambda-capturecapture-default 384 | capture-list 385 | capture-default "," capture-list 386 lambda-capture-opt → %empty 387 | lambda-capture 388 lambda-declaratorlambda-specifiers 389 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 390 lambda-expressionlambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer"[" lambda-capture-opt "]" 393 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 394 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 396 literalinteger-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id"operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expressioninclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expressionlogical-and-expression 408 | logical-or-expression "||" logical-and-expression 409 mem-initializermem-initializer-id "(" expression-list-opt ")" 410 | mem-initializer-id braced-init-list 411 mem-initializer-idclass-or-decltype 412 | IDENTIFIER 413 mem-initializer-listmem-initializer ELLIPSIS-opt 414 | mem-initializer-list "," mem-initializer ELLIPSIS-opt 415 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 416 | function-definition 417 | using-declaration 418 | using-enum-declaration 419 | static_assert-declaration 420 | template-declaration 421 | explicit-specialization 422 | deduction-guide 423 | alias-declaration 424 | opaque-enum-declaration 425 | empty-declaration 426 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 427 | declarator requires-clause 428 | declarator brace-or-equal-initializer-opt 429 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 430 member-declarator-listmember-declarator 431 | member-declarator-list "," member-declarator 432 member-declarator-list-opt → %empty 433 | member-declarator-list 434 member-specificationmember-declaration member-specification-opt 435 | access-specifier ":" member-specification-opt 436 member-specification-opt → %empty 437 | member-specification 438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 439 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 442 module-namemodule-name-qualifier-opt IDENTIFIER 443 module-name-qualifierIDENTIFIER "." 444 | module-name-qualifier IDENTIFIER "." 445 module-name-qualifier-opt → %empty 446 | module-name-qualifier 447 module-partition":" module-name-qualifier-opt IDENTIFIER 448 module-partition-opt → %empty 449 | module-partition 450 multiplicative-expressionpm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-aliasIDENTIFIER 456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 457 namespace-bodydeclaration-seq-opt 458 namespace-definitionnamed-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-nameIDENTIFIER 462 | namespace-alias 463 nested-name-specifier"::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt → %empty 470 | nested-name-specifier 471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 472 nested-requirement"requires" constraint-expression ";" 473 new-declaratorptr-operator new-declarator-opt 474 | noptr-new-declarator 475 new-declarator-opt → %empty 476 | new-declarator 477 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 479 new-initializer"(" expression-list-opt ")" 480 | braced-init-list 481 new-initializer-opt → %empty 482 | new-initializer 483 new-placement"(" expression-list ")" 484 new-placement-opt → %empty 485 | new-placement 486 new-type-idtype-specifier-seq new-declarator-opt 487 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" 488 noexcept-expression"noexcept" "(" expression ")" 489 noexcept-specifier"noexcept" "(" constant-expression ")" 490 | "noexcept" 491 noexcept-specifier-opt → %empty 492 | noexcept-specifier 493 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt → %empty 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 501 noptr-declaratordeclarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 505 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt 506 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 508 operator-function-id"operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 510 overloadable-operator"new" 511 | "delete" 512 | "new" "[" "]" 513 | "delete" "[" "]" 514 | "co_await" 515 | "(" ")" 516 | "[" "]" 517 | "->" 518 | "->*" 519 | "~" 520 | "!" 521 | "+" 522 | "-" 523 | "*" 524 | "/" 525 | "%" 526 | "^" 527 | "&" 528 | "|" 529 | "=" 530 | "+=" 531 | "-=" 532 | "*=" 533 | "/=" 534 | "%=" 535 | "^=" 536 | "&=" 537 | "|=" 538 | "==" 539 | "!=" 540 | "<" 541 | ">" 542 | "<=" 543 | ">=" 544 | "<=>" 545 | "&&" 546 | "||" 547 | "<<" 548 | ">>" 549 | "<<=" 550 | ">>=" 551 | "++" 552 | "--" 553 | "," 554 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 558 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt 559 | parameter-declaration-list "," "..." 560 parameter-declaration-listparameter-declaration 561 | parameter-declaration-list "," parameter-declaration 562 parameter-declaration-list-opt → %empty 563 | parameter-declaration-list 564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 565 placeholder-type-specifiertype-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expressioncast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literalPOINTER_LITERAL 571 postfix-expressionprimary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expressionliteral 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 596 private-module-fragment"module" ":" "private" ";" declaration-seq-opt 597 private-module-fragment-opt → %empty 598 | private-module-fragment 599 ptr-abstract-declaratornoptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 601 ptr-abstract-declarator-opt → %empty 602 | ptr-abstract-declarator 603 ptr-declaratornoptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 609 pure-specifier"=" INTEGER_LITERAL 610 pure-specifier-opt → %empty 611 | pure-specifier 612 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 613 qualified-namespace-specifiernested-name-specifier-opt namespace-name 614 ref-qualifier"&" 615 | "&&" 616 ref-qualifier-opt → %empty 617 | ref-qualifier 618 relational-expressioncompare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 623 requirementsimple-requirement 624 | type-requirement 625 | compound-requirement 626 | nested-requirement 627 requirement-body"{" requirement-seq "}" 628 requirement-parameter-list"(" parameter-declaration-clause ")" 629 requirement-parameter-list-opt → %empty 630 | requirement-parameter-list 631 requirement-seqrequirement 632 | requirement-seq requirement 633 requires-clause"requires" constraint-logical-or-expression 634 requires-clause-opt → %empty 635 | requires-clause 636 requires-expression"requires" requirement-parameter-list-opt requirement-body 637 return-type-requirement"->" type-constraint 638 return-type-requirement-opt → %empty 639 | return-type-requirement 640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 642 | "if" NOT-opt "consteval" compound-statement 643 | "if" NOT-opt "consteval" compound-statement "else" statement 644 | "switch" "(" init-statement-opt condition ")" statement 645 shift-expressionadditive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 648 simple-captureIDENTIFIER ELLIPSIS-opt 649 | "&" IDENTIFIER ELLIPSIS-opt 650 | "this" 651 | "*" "this" 652 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 655 simple-requirementexpression ";" 656 simple-template-idtemplate-name "<" template-argument-list-opt ">" 657 simple-type-specifiernested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statementlabeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 684 statement-seqstatement 685 | statement-seq statement 686 statement-seq-opt → %empty 687 | statement-seq 688 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier"static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 694 string-literalSTRING_LITERAL 695 template-argumentconstant-expression 696 | type-id 697 | id-expression 698 template-argument-listtemplate-argument ELLIPSIS-opt 699 | template-argument-list "," template-argument ELLIPSIS-opt 700 template-argument-list-opt → %empty 701 | template-argument-list 702 template-declarationtemplate-head declaration 703 | template-head concept-definition 704 template-head"template" "<" template-parameter-list ">" requires-clause-opt 705 template-idsimple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-nameIDENTIFIER 709 template-parametertype-parameter 710 | parameter-declaration 711 template-parameter-listtemplate-parameter 712 | template-parameter-list "," template-parameter 713 throw-expression"throw" assignment-expression-opt 714 trailing-return-type"->" type-id 715 trailing-return-type-opt → %empty 716 | trailing-return-type 717 translation-unitdeclaration-seq-opt 718 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 719 try-block"try" compound-statement handler-seq 720 type-constraintnested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt → %empty 723 | type-constraint 724 type-idtype-specifier-seq abstract-declarator-opt 725 type-nameclass-name 726 | enum-name 727 | typedef-name 728 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt 729 | type-parameter-key IDENTIFIER-opt "=" type-id 730 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 731 | type-constraint IDENTIFIER-opt "=" type-id 732 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 734 type-parameter-key"class" 735 | "typename" 736 type-requirement"typename" nested-name-specifier-opt type-name ";" 737 type-specifiersimple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seqtype-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-nameIDENTIFIER 744 | simple-template-id 745 typename-specifier"typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 747 ud-suffixIDENTIFIER 748 unary-expressionpostfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator"*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 766 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 767 unqualified-idIDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literalUSER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literalUSER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literalUSER_DEFINED_INTEGER_LITERAL 777 user-defined-literaluser-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literalstring-literal ud-suffix 782 using-declaration"using" using-declarator-list ";" 783 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id 784 using-declarator-listusing-declarator ELLIPSIS-opt 785 | using-declarator-list "," using-declarator ELLIPSIS-opt 786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration"using" elaborated-enum-specifier ";" 788 virt-specifier"override" 789 | "final" 790 virt-specifier-seqvirt-specifier 791 | virt-specifier-seq virt-specifier 792 virt-specifier-seq-opt → %empty 793 | virt-specifier-seq 794 yield-expression"co_yield" assignment-expression 795 | "co_yield" braced-init-list 796 resulttranslation-unit

Terminals, with rules where they appear

Nonterminals, with rules where they appear

Automaton

State 0

0 $accept result $end 9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty [$end] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 335 global-module-fragment "module" ";" declaration-seq-opt 336 global-module-fragment-opt %empty ["export", "module"] 337 | global-module-fragment 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 717 translation-unit declaration-seq-opt 718 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" 796 result translation-unit "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "module" shift, and go to state 24 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 210 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 336 (global-module-fragment-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" [reduce using rule 336 (global-module-fragment-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 62 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 global-module-fragment go to state 80 global-module-fragment-opt go to state 81 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 translation-unit go to state 103 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113 result go to state 114

State 1

187 decl-specifier"constexpr" $default reduce using rule 187 (decl-specifier)

State 2

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 272 | "export" declaration 273 | "export" "{" declaration-seq-opt "}" 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "{" shift, and go to state 115 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 116 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 117 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 3

10 EXTERN-opt"extern" ["template"] 394 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 692 storage-class-specifier"extern" ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 694 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 118 "template" reduce using rule 10 (EXTERN-opt) $default reduce using rule 692 (storage-class-specifier) string-literal go to state 119

State 4

139 class-nameIDENTIFIER ["::"] 248 enum-nameIDENTIFIER ["::"] 455 namespace-aliasIDENTIFIER ["::"] 461 namespace-nameIDENTIFIER ["::"] 708 template-nameIDENTIFIER ["<"] 743 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 455 (namespace-alias)] "::" [reduce using rule 461 (namespace-name)] "::" [reduce using rule 743 (typedef-name)] "<" reduce using rule 708 (template-name) $default reduce using rule 139 (class-name)

State 5

14 INLINE-opt"inline" ["namespace"] 190 decl-specifier"inline" ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "namespace" reduce using rule 14 (INLINE-opt) $default reduce using rule 190 (decl-specifier)

State 6

463 nested-name-specifier"::" $default reduce using rule 463 (nested-name-specifier)

State 7

267 explicit-specialization"template" "<" ">" declaration 704 template-head"template" "<" template-parameter-list ">" requires-clause-opt "<" shift, and go to state 120

State 8

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier"typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 122 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 9

332 function-specifier"virtual" $default reduce using rule 332 (function-specifier)

State 10

25 TYPENAME-opt %empty [IDENTIFIER, "::", "decltype"] 26 | "typename" 44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 782 using-declaration"using" using-declarator-list ";" 783 using-declarator TYPENAME-opt nested-name-specifier unqualified-id 784 using-declarator-list using-declarator ELLIPSIS-opt 785 | using-declarator-list "," using-declarator ELLIPSIS-opt 787 using-enum-declaration"using" elaborated-enum-specifier ";" IDENTIFIER shift, and go to state 123 "typename" shift, and go to state 124 "enum" shift, and go to state 125 IDENTIFIER [reduce using rule 25 (TYPENAME-opt)] $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 126 elaborated-enum-specifier go to state 127 using-declarator go to state 128 using-declarator-list go to state 129

State 11

235 empty-declaration";" $default reduce using rule 235 (empty-declaration)

State 12

136 class-key"class" $default reduce using rule 136 (class-key)

State 13

137 class-key"struct" $default reduce using rule 137 (class-key)

State 14

138 class-key"union" $default reduce using rule 138 (class-key)

State 15

177 cv-qualifier"const" $default reduce using rule 177 (cv-qualifier)

State 16

178 cv-qualifier"volatile" $default reduce using rule 178 (cv-qualifier)

State 17

185 decl-specifier"friend" $default reduce using rule 185 (decl-specifier)

State 18

186 decl-specifier"typedef" $default reduce using rule 186 (decl-specifier)

State 19

188 decl-specifier"consteval" $default reduce using rule 188 (decl-specifier)

State 20

189 decl-specifier"constinit" $default reduce using rule 189 (decl-specifier)

State 21

216 decltype-specifier"decltype" "(" expression ")" "(" shift, and go to state 130

State 22

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 245 enum-key"enum" [IDENTIFIER, "::", "alignas", "[", ":", "{", "decltype"] 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "class" shift, and go to state 131 "struct" shift, and go to state 132 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 245 (enum-key)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 245 (enum-key)] "decltype" [reduce using rule 245 (enum-key)] $default reduce using rule 245 (enum-key) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 134 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 23

268 explicit-specifier"explicit" "(" constant-expression ")" 269 | "explicit" [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", ">", "explicit", "*", "requires", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 135 "(" [reduce using rule 269 (explicit-specifier)] $default reduce using rule 269 (explicit-specifier)

State 24

335 global-module-fragment"module" ";" declaration-seq-opt ";" shift, and go to state 136

State 25

342 header-name HEADER_NAME 439 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 442 module-name module-name-qualifier-opt IDENTIFIER 443 module-name-qualifier IDENTIFIER "." 444 | module-name-qualifier IDENTIFIER "." 445 module-name-qualifier-opt %empty [IDENTIFIER] 446 | module-name-qualifier 447 module-partition ":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 137 ":" shift, and go to state 138 HEADER_NAME shift, and go to state 139 IDENTIFIER [reduce using rule 445 (module-name-qualifier-opt)] header-name go to state 140 module-name go to state 141 module-name-qualifier go to state 142 module-name-qualifier-opt go to state 143 module-partition go to state 144

State 26

236 enclosing-namespace-specifier IDENTIFIER 237 | enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" IDENTIFIER shift, and go to state 145 enclosing-namespace-specifier go to state 146

State 27

662 simple-type-specifier"char" $default reduce using rule 662 (simple-type-specifier)

State 28

663 simple-type-specifier"char8_t" $default reduce using rule 663 (simple-type-specifier)

State 29

664 simple-type-specifier"char16_t" $default reduce using rule 664 (simple-type-specifier)

State 30

665 simple-type-specifier"char32_t" $default reduce using rule 665 (simple-type-specifier)

State 31

666 simple-type-specifier"wchar_t" $default reduce using rule 666 (simple-type-specifier)

State 32

667 simple-type-specifier"bool" $default reduce using rule 667 (simple-type-specifier)

State 33

668 simple-type-specifier"short" $default reduce using rule 668 (simple-type-specifier)

State 34

669 simple-type-specifier"int" $default reduce using rule 669 (simple-type-specifier)

State 35

670 simple-type-specifier"long" $default reduce using rule 670 (simple-type-specifier)

State 36

671 simple-type-specifier"signed" $default reduce using rule 671 (simple-type-specifier)

State 37

672 simple-type-specifier"unsigned" $default reduce using rule 672 (simple-type-specifier)

State 38

673 simple-type-specifier"float" $default reduce using rule 673 (simple-type-specifier)

State 39

674 simple-type-specifier"double" $default reduce using rule 674 (simple-type-specifier)

State 40

675 simple-type-specifier"void" $default reduce using rule 675 (simple-type-specifier)

State 41

688 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" "(" shift, and go to state 147

State 42

690 storage-class-specifier"static" $default reduce using rule 690 (storage-class-specifier)

State 43

691 storage-class-specifier"thread_local" $default reduce using rule 691 (storage-class-specifier)

State 44

693 storage-class-specifier"mutable" $default reduce using rule 693 (storage-class-specifier)

State 45

266 explicit-instantiationEXTERN-opt "template" declaration "template" shift, and go to state 148

State 46

454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 766 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" "namespace" shift, and go to state 149

State 47

114 block-declarationalias-declaration $default reduce using rule 114 (block-declaration)

State 48

108 block-declarationasm-declaration $default reduce using rule 108 (block-declaration)

State 49

206 declarationattribute-declaration $default reduce using rule 206 (declaration)

State 50

71 attribute-declarationattribute-specifier-seq ";" 84 attribute-specifier-seq-optattribute-specifier-seq ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 653 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 ";" shift, and go to state 152 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 84 (attribute-specifier-seq-opt)] "extern" [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 84 (attribute-specifier-seq-opt)] "::" [reduce using rule 84 (attribute-specifier-seq-opt)] "typename" [reduce using rule 84 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 84 (attribute-specifier-seq-opt)] "class" [reduce using rule 84 (attribute-specifier-seq-opt)] "struct" [reduce using rule 84 (attribute-specifier-seq-opt)] "union" [reduce using rule 84 (attribute-specifier-seq-opt)] "const" [reduce using rule 84 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 84 (attribute-specifier-seq-opt)] "friend" [reduce using rule 84 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 84 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 84 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 84 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 84 (attribute-specifier-seq-opt)] "auto" reduce using rule 84 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 84 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "bool" [reduce using rule 84 (attribute-specifier-seq-opt)] "short" [reduce using rule 84 (attribute-specifier-seq-opt)] "int" [reduce using rule 84 (attribute-specifier-seq-opt)] "long" [reduce using rule 84 (attribute-specifier-seq-opt)] "signed" [reduce using rule 84 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 84 (attribute-specifier-seq-opt)] "float" [reduce using rule 84 (attribute-specifier-seq-opt)] "double" [reduce using rule 84 (attribute-specifier-seq-opt)] "void" [reduce using rule 84 (attribute-specifier-seq-opt)] "static" [reduce using rule 84 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 84 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 153 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 51

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 193 decl-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "(", "&", "&&", "operator", "decltype", "*", "~"] 194 | decl-specifier-seq 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 487 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" "constexpr" shift, and go to state 1 "..." shift, and go to state 156 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 157 "alignas" shift, and go to state 158 "(" shift, and go to state 159 "&" shift, and go to state 160 "asm" shift, and go to state 161 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "&&" shift, and go to state 163 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 164 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "..." [reduce using rule 193 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] IDENTIFIER [reduce using rule 193 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 193 (decl-specifier-seq-opt)] "(" [reduce using rule 193 (decl-specifier-seq-opt)] "&" [reduce using rule 193 (decl-specifier-seq-opt)] "&&" [reduce using rule 193 (decl-specifier-seq-opt)] "operator" reduce using rule 5 (ELLIPSIS-opt) "operator" [reduce using rule 193 (decl-specifier-seq-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 193 (decl-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "*" [reduce using rule 193 (decl-specifier-seq-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) "~" [reduce using rule 193 (decl-specifier-seq-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 168 decl-specifier-seq-opt go to state 169 declarator go to state 170 declarator-id go to state 171 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 172 nested-name-specifier-opt go to state 90 noptr-declarator go to state 173 placeholder-type-specifier go to state 94 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 52

195 declarationblock-declaration $default reduce using rule 195 (declaration)

State 53

144 class-specifierclass-head "{" member-specification-opt "}" "{" shift, and go to state 176

State 54

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "alignas", "[", ":", "{", "decltype"] 84 | attribute-specifier-seq 133 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 178 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 179 simple-template-id go to state 180 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 55

725 type-nameclass-name $default reduce using rule 725 (type-name)

State 56

220 defining-type-specifierclass-specifier $default reduce using rule 220 (defining-type-specifier)

State 57

740 type-specifiercv-qualifier $default reduce using rule 740 (type-specifier)

State 58

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [",", "...", IDENTIFIER, "noexcept", "::", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "&&", "operator", "decltype", "->", ">", "*", "requires", "~"] 84 | attribute-specifier-seq 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 191 | decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 181 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 182 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 59

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 351 init-declarator declarator initializer-opt 352 | declarator requires-clause 353 init-declarator-list init-declarator 354 | init-declarator-list "," init-declarator 355 init-declarator-list-opt %empty [";"] 356 | init-declarator-list 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 652 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] ";" reduce using rule 355 (init-declarator-list-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 183 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 init-declarator go to state 184 init-declarator-list go to state 185 init-declarator-list-opt go to state 186 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 60

208 declaration-seqdeclaration $default reduce using rule 208 (declaration-seq)

State 61

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 209 declaration-seqdeclaration-seq declaration 211 declaration-seq-optdeclaration-seq [$end, "export", "}", "module"] 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 211 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 211 (declaration-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 211 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 211 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 188 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 62

717 translation-unitdeclaration-seq-opt $default reduce using rule 717 (translation-unit)

State 63

466 nested-name-specifierdecltype-specifier "::" 659 simple-type-specifierdecltype-specifier [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 189 "::" [reduce using rule 659 (simple-type-specifier)] $default reduce using rule 659 (simple-type-specifier)

State 64

199 declarationdeduction-guide $default reduce using rule 199 (declaration)

State 65

183 decl-specifierdefining-type-specifier $default reduce using rule 183 (decl-specifier)

State 66

234 elaborated-type-specifierelaborated-enum-specifier $default reduce using rule 234 (elaborated-type-specifier)

State 67

738 type-specifierelaborated-type-specifier $default reduce using rule 738 (type-specifier)

State 68

205 declarationempty-declaration $default reduce using rule 205 (declaration)

State 69

249 enum-specifierenum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" "{" shift, and go to state 190

State 70

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 191

State 71

726 type-nameenum-name $default reduce using rule 726 (type-name)

State 72

221 defining-type-specifierenum-specifier $default reduce using rule 221 (defining-type-specifier)

State 73

200 declarationexplicit-instantiation $default reduce using rule 200 (declaration)

State 74

201 declarationexplicit-specialization $default reduce using rule 201 (declaration)

State 75

271 explicit-specifier-optexplicit-specifier [IDENTIFIER] 333 function-specifierexplicit-specifier ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] IDENTIFIER reduce using rule 271 (explicit-specifier-opt) IDENTIFIER [reduce using rule 333 (function-specifier)] $default reduce using rule 333 (function-specifier)

State 76

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 template-name go to state 193

State 77

202 declarationexport-declaration $default reduce using rule 202 (declaration)

State 78

197 declarationfunction-definition $default reduce using rule 197 (declaration)

State 79

184 decl-specifierfunction-specifier $default reduce using rule 184 (decl-specifier)

State 80

337 global-module-fragment-optglobal-module-fragment $default reduce using rule 337 (global-module-fragment-opt)

State 81

7 EXPORT-opt %empty ["module"] 8 | "export" 438 module-declaration EXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 718 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt "export" shift, and go to state 194 $default reduce using rule 7 (EXPORT-opt) EXPORT-opt go to state 195 module-declaration go to state 196

State 82

203 declarationlinkage-specification $default reduce using rule 203 (declaration)

State 83

207 declarationmodule-import-declaration $default reduce using rule 207 (declaration)

State 84

458 namespace-definitionnamed-namespace-definition $default reduce using rule 458 (namespace-definition)

State 85

462 namespace-namenamespace-alias $default reduce using rule 462 (namespace-name)

State 86

109 block-declarationnamespace-alias-definition $default reduce using rule 109 (block-declaration)

State 87

204 declarationnamespace-definition $default reduce using rule 204 (declaration)

State 88

465 nested-name-specifiernamespace-name "::" "::" shift, and go to state 197

State 89

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 470 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 658 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 199 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 470 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 90

139 class-name IDENTIFIER 140 | simple-template-id 153 concept-name IDENTIFIER 248 enum-name IDENTIFIER 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifiernested-name-specifier-opt type-name 661 | nested-name-specifier-opt template-name 708 template-name IDENTIFIER 720 type-constraintnested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 201 class-name go to state 55 concept-name go to state 202 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 203 type-name go to state 204 typedef-name go to state 108

State 91

460 namespace-definitionnested-namespace-definition $default reduce using rule 460 (namespace-definition)

State 92

196 declarationnodeclspec-function-declaration $default reduce using rule 196 (declaration)

State 93

115 block-declarationopaque-enum-declaration $default reduce using rule 115 (block-declaration)

State 94

660 simple-type-specifierplaceholder-type-specifier $default reduce using rule 660 (simple-type-specifier)

State 95

107 block-declarationsimple-declaration $default reduce using rule 107 (block-declaration)

State 96

140 class-namesimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 744 typedef-namesimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 140 (class-name) "," [reduce using rule 744 (typedef-name)] "constexpr" reduce using rule 140 (class-name) "constexpr" [reduce using rule 744 (typedef-name)] "..." reduce using rule 140 (class-name) "..." [reduce using rule 744 (typedef-name)] "export" reduce using rule 140 (class-name) "export" [reduce using rule 744 (typedef-name)] "extern" reduce using rule 140 (class-name) "extern" [reduce using rule 744 (typedef-name)] IDENTIFIER reduce using rule 140 (class-name) IDENTIFIER [reduce using rule 744 (typedef-name)] "inline" reduce using rule 140 (class-name) "inline" [reduce using rule 744 (typedef-name)] "noexcept" reduce using rule 140 (class-name) "noexcept" [reduce using rule 744 (typedef-name)] "::" reduce using rule 140 (class-name) "::" [reduce using rule 744 (typedef-name)] "template" reduce using rule 140 (class-name) "template" [reduce using rule 744 (typedef-name)] "typename" reduce using rule 140 (class-name) "typename" [reduce using rule 744 (typedef-name)] "virtual" reduce using rule 140 (class-name) "virtual" [reduce using rule 744 (typedef-name)] "+" reduce using rule 140 (class-name) "+" [reduce using rule 744 (typedef-name)] "-" reduce using rule 140 (class-name) "-" [reduce using rule 744 (typedef-name)] "using" reduce using rule 140 (class-name) "using" [reduce using rule 744 (typedef-name)] "=" reduce using rule 140 (class-name) "=" [reduce using rule 744 (typedef-name)] ";" reduce using rule 140 (class-name) ";" [reduce using rule 744 (typedef-name)] "alignas" reduce using rule 140 (class-name) "alignas" [reduce using rule 744 (typedef-name)] "(" reduce using rule 140 (class-name) "(" [reduce using rule 744 (typedef-name)] ")" reduce using rule 140 (class-name) ")" [reduce using rule 744 (typedef-name)] "&" reduce using rule 140 (class-name) "&" [reduce using rule 744 (typedef-name)] "asm" reduce using rule 140 (class-name) "asm" [reduce using rule 744 (typedef-name)] "*=" reduce using rule 140 (class-name) "*=" [reduce using rule 744 (typedef-name)] "/=" reduce using rule 140 (class-name) "/=" [reduce using rule 744 (typedef-name)] "%=" reduce using rule 140 (class-name) "%=" [reduce using rule 744 (typedef-name)] "+=" reduce using rule 140 (class-name) "+=" [reduce using rule 744 (typedef-name)] "-=" reduce using rule 140 (class-name) "-=" [reduce using rule 744 (typedef-name)] ">>=" reduce using rule 140 (class-name) ">>=" [reduce using rule 744 (typedef-name)] "<<=" reduce using rule 140 (class-name) "<<=" [reduce using rule 744 (typedef-name)] "&=" reduce using rule 140 (class-name) "&=" [reduce using rule 744 (typedef-name)] "^=" reduce using rule 140 (class-name) "^=" [reduce using rule 744 (typedef-name)] "|=" reduce using rule 140 (class-name) "|=" [reduce using rule 744 (typedef-name)] "[" reduce using rule 140 (class-name) "[" [reduce using rule 744 (typedef-name)] "]" reduce using rule 140 (class-name) "]" [reduce using rule 744 (typedef-name)] ":" reduce using rule 140 (class-name) ":" [reduce using rule 744 (typedef-name)] "{" reduce using rule 140 (class-name) "{" [reduce using rule 744 (typedef-name)] "}" reduce using rule 140 (class-name) "}" [reduce using rule 744 (typedef-name)] "class" reduce using rule 140 (class-name) "class" [reduce using rule 744 (typedef-name)] "struct" reduce using rule 140 (class-name) "struct" [reduce using rule 744 (typedef-name)] "union" reduce using rule 140 (class-name) "union" [reduce using rule 744 (typedef-name)] "final" reduce using rule 140 (class-name) "final" [reduce using rule 744 (typedef-name)] "<=>" reduce using rule 140 (class-name) "<=>" [reduce using rule 744 (typedef-name)] "concept" reduce using rule 140 (class-name) "concept" [reduce using rule 744 (typedef-name)] "?" reduce using rule 140 (class-name) "?" [reduce using rule 744 (typedef-name)] "&&" reduce using rule 140 (class-name) "&&" [reduce using rule 744 (typedef-name)] "||" reduce using rule 140 (class-name) "||" [reduce using rule 744 (typedef-name)] "operator" reduce using rule 140 (class-name) "operator" [reduce using rule 744 (typedef-name)] "const" reduce using rule 140 (class-name) "const" [reduce using rule 744 (typedef-name)] "volatile" reduce using rule 140 (class-name) "volatile" [reduce using rule 744 (typedef-name)] "friend" reduce using rule 140 (class-name) "friend" [reduce using rule 744 (typedef-name)] "typedef" reduce using rule 140 (class-name) "typedef" [reduce using rule 744 (typedef-name)] "consteval" reduce using rule 140 (class-name) "consteval" [reduce using rule 744 (typedef-name)] "constinit" reduce using rule 140 (class-name) "constinit" [reduce using rule 744 (typedef-name)] "decltype" reduce using rule 140 (class-name) "decltype" [reduce using rule 744 (typedef-name)] "->" reduce using rule 140 (class-name) "->" [reduce using rule 744 (typedef-name)] "." reduce using rule 140 (class-name) "." [reduce using rule 744 (typedef-name)] "enum" reduce using rule 140 (class-name) "enum" [reduce using rule 744 (typedef-name)] "==" reduce using rule 140 (class-name) "==" [reduce using rule 744 (typedef-name)] "!=" reduce using rule 140 (class-name) "!=" [reduce using rule 744 (typedef-name)] "^" reduce using rule 140 (class-name) "^" [reduce using rule 744 (typedef-name)] "<" reduce using rule 140 (class-name) "<" [reduce using rule 744 (typedef-name)] ">" reduce using rule 140 (class-name) ">" [reduce using rule 744 (typedef-name)] "explicit" reduce using rule 140 (class-name) "explicit" [reduce using rule 744 (typedef-name)] "*" reduce using rule 140 (class-name) "*" [reduce using rule 744 (typedef-name)] "/" reduce using rule 140 (class-name) "/" [reduce using rule 744 (typedef-name)] "%" reduce using rule 140 (class-name) "%" [reduce using rule 744 (typedef-name)] "|" reduce using rule 140 (class-name) "|" [reduce using rule 744 (typedef-name)] "<<" reduce using rule 140 (class-name) "<<" [reduce using rule 744 (typedef-name)] ">>" reduce using rule 140 (class-name) ">>" [reduce using rule 744 (typedef-name)] "<=" reduce using rule 140 (class-name) "<=" [reduce using rule 744 (typedef-name)] ">=" reduce using rule 140 (class-name) ">=" [reduce using rule 744 (typedef-name)] ".*" reduce using rule 140 (class-name) ".*" [reduce using rule 744 (typedef-name)] "->*" reduce using rule 140 (class-name) "->*" [reduce using rule 744 (typedef-name)] "try" reduce using rule 140 (class-name) "try" [reduce using rule 744 (typedef-name)] "import" reduce using rule 140 (class-name) "import" [reduce using rule 744 (typedef-name)] "namespace" reduce using rule 140 (class-name) "namespace" [reduce using rule 744 (typedef-name)] "requires" reduce using rule 140 (class-name) "requires" [reduce using rule 744 (typedef-name)] "~" reduce using rule 140 (class-name) "~" [reduce using rule 744 (typedef-name)] "++" reduce using rule 140 (class-name) "++" [reduce using rule 744 (typedef-name)] "--" reduce using rule 140 (class-name) "--" [reduce using rule 744 (typedef-name)] "auto" reduce using rule 140 (class-name) "auto" [reduce using rule 744 (typedef-name)] "char" reduce using rule 140 (class-name) "char" [reduce using rule 744 (typedef-name)] "char8_t" reduce using rule 140 (class-name) "char8_t" [reduce using rule 744 (typedef-name)] "char16_t" reduce using rule 140 (class-name) "char16_t" [reduce using rule 744 (typedef-name)] "char32_t" reduce using rule 140 (class-name) "char32_t" [reduce using rule 744 (typedef-name)] "wchar_t" reduce using rule 140 (class-name) "wchar_t" [reduce using rule 744 (typedef-name)] "bool" reduce using rule 140 (class-name) "bool" [reduce using rule 744 (typedef-name)] "short" reduce using rule 140 (class-name) "short" [reduce using rule 744 (typedef-name)] "int" reduce using rule 140 (class-name) "int" [reduce using rule 744 (typedef-name)] "long" reduce using rule 140 (class-name) "long" [reduce using rule 744 (typedef-name)] "signed" reduce using rule 140 (class-name) "signed" [reduce using rule 744 (typedef-name)] "unsigned" reduce using rule 140 (class-name) "unsigned" [reduce using rule 744 (typedef-name)] "float" reduce using rule 140 (class-name) "float" [reduce using rule 744 (typedef-name)] "double" reduce using rule 140 (class-name) "double" [reduce using rule 744 (typedef-name)] "void" reduce using rule 140 (class-name) "void" [reduce using rule 744 (typedef-name)] "static_assert" reduce using rule 140 (class-name) "static_assert" [reduce using rule 744 (typedef-name)] "static" reduce using rule 140 (class-name) "static" [reduce using rule 744 (typedef-name)] "thread_local" reduce using rule 140 (class-name) "thread_local" [reduce using rule 744 (typedef-name)] "mutable" reduce using rule 140 (class-name) "mutable" [reduce using rule 744 (typedef-name)] "override" reduce using rule 140 (class-name) "override" [reduce using rule 744 (typedef-name)] $default reduce using rule 140 (class-name)

State 97

737 type-specifiersimple-type-specifier $default reduce using rule 737 (type-specifier)

State 98

113 block-declarationstatic_assert-declaration $default reduce using rule 113 (block-declaration)

State 99

182 decl-specifierstorage-class-specifier $default reduce using rule 182 (decl-specifier)

State 100

198 declarationtemplate-declaration $default reduce using rule 198 (declaration)

State 101

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 152 concept-definition "concept" concept-name "=" constraint-expression ";" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 702 | template-head declaration 703 | template-head concept-definition 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "concept" shift, and go to state 205 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 concept-definition go to state 206 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 207 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 102

656 simple-template-idtemplate-name "<" template-argument-list-opt ">" "<" shift, and go to state 208

State 103

796 resulttranslation-unit $default reduce using rule 796 (result)

State 104

723 type-constraint-opttype-constraint $default reduce using rule 723 (type-constraint-opt)

State 105

565 placeholder-type-specifiertype-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" "decltype" shift, and go to state 209 "auto" shift, and go to state 210

State 106

464 nested-name-specifiertype-name "::" "::" shift, and go to state 211

State 107

219 defining-type-specifiertype-specifier $default reduce using rule 219 (defining-type-specifier)

State 108

727 type-nametypedef-name $default reduce using rule 727 (type-name)

State 109

739 type-specifiertypename-specifier $default reduce using rule 739 (type-specifier)

State 110

459 namespace-definitionunnamed-namespace-definition $default reduce using rule 459 (namespace-definition)

State 111

110 block-declarationusing-declaration $default reduce using rule 110 (block-declaration)

State 112

112 block-declarationusing-directive $default reduce using rule 112 (block-declaration)

State 113

111 block-declarationusing-enum-declaration $default reduce using rule 111 (block-declaration)

State 114

0 $acceptresult $end $end shift, and go to state 212

State 115

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty ["}"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 210 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 213 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 116

272 export-declaration"export" declaration $default reduce using rule 272 (export-declaration)

State 117

207 declarationmodule-import-declaration [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "private", "protected", "public", "using", ";", "alignas", "(", "&", "asm", "[", ":", "}", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "module", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 274 export-declaration"export" module-import-declaration [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "private", "protected", "public", "using", ";", "alignas", "(", "&", "asm", "[", ":", "}", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "module", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] $end reduce using rule 207 (declaration) $end [reduce using rule 274 (export-declaration)] "constexpr" reduce using rule 207 (declaration) "constexpr" [reduce using rule 274 (export-declaration)] "..." reduce using rule 207 (declaration) "..." [reduce using rule 274 (export-declaration)] "export" reduce using rule 207 (declaration) "export" [reduce using rule 274 (export-declaration)] "extern" reduce using rule 207 (declaration) "extern" [reduce using rule 274 (export-declaration)] IDENTIFIER reduce using rule 207 (declaration) IDENTIFIER [reduce using rule 274 (export-declaration)] "inline" reduce using rule 207 (declaration) "inline" [reduce using rule 274 (export-declaration)] "::" reduce using rule 207 (declaration) "::" [reduce using rule 274 (export-declaration)] "template" reduce using rule 207 (declaration) "template" [reduce using rule 274 (export-declaration)] "typename" reduce using rule 207 (declaration) "typename" [reduce using rule 274 (export-declaration)] "virtual" reduce using rule 207 (declaration) "virtual" [reduce using rule 274 (export-declaration)] "private" reduce using rule 207 (declaration) "private" [reduce using rule 274 (export-declaration)] "protected" reduce using rule 207 (declaration) "protected" [reduce using rule 274 (export-declaration)] "public" reduce using rule 207 (declaration) "public" [reduce using rule 274 (export-declaration)] "using" reduce using rule 207 (declaration) "using" [reduce using rule 274 (export-declaration)] ";" reduce using rule 207 (declaration) ";" [reduce using rule 274 (export-declaration)] "alignas" reduce using rule 207 (declaration) "alignas" [reduce using rule 274 (export-declaration)] "(" reduce using rule 207 (declaration) "(" [reduce using rule 274 (export-declaration)] "&" reduce using rule 207 (declaration) "&" [reduce using rule 274 (export-declaration)] "asm" reduce using rule 207 (declaration) "asm" [reduce using rule 274 (export-declaration)] "[" reduce using rule 207 (declaration) "[" [reduce using rule 274 (export-declaration)] ":" reduce using rule 207 (declaration) ":" [reduce using rule 274 (export-declaration)] "}" reduce using rule 207 (declaration) "}" [reduce using rule 274 (export-declaration)] "class" reduce using rule 207 (declaration) "class" [reduce using rule 274 (export-declaration)] "struct" reduce using rule 207 (declaration) "struct" [reduce using rule 274 (export-declaration)] "union" reduce using rule 207 (declaration) "union" [reduce using rule 274 (export-declaration)] "&&" reduce using rule 207 (declaration) "&&" [reduce using rule 274 (export-declaration)] "operator" reduce using rule 207 (declaration) "operator" [reduce using rule 274 (export-declaration)] "const" reduce using rule 207 (declaration) "const" [reduce using rule 274 (export-declaration)] "volatile" reduce using rule 207 (declaration) "volatile" [reduce using rule 274 (export-declaration)] "friend" reduce using rule 207 (declaration) "friend" [reduce using rule 274 (export-declaration)] "typedef" reduce using rule 207 (declaration) "typedef" [reduce using rule 274 (export-declaration)] "consteval" reduce using rule 207 (declaration) "consteval" [reduce using rule 274 (export-declaration)] "constinit" reduce using rule 207 (declaration) "constinit" [reduce using rule 274 (export-declaration)] "decltype" reduce using rule 207 (declaration) "decltype" [reduce using rule 274 (export-declaration)] "enum" reduce using rule 207 (declaration) "enum" [reduce using rule 274 (export-declaration)] "explicit" reduce using rule 207 (declaration) "explicit" [reduce using rule 274 (export-declaration)] "*" reduce using rule 207 (declaration) "*" [reduce using rule 274 (export-declaration)] "module" reduce using rule 207 (declaration) "module" [reduce using rule 274 (export-declaration)] "import" reduce using rule 207 (declaration) "import" [reduce using rule 274 (export-declaration)] "namespace" reduce using rule 207 (declaration) "namespace" [reduce using rule 274 (export-declaration)] "~" reduce using rule 207 (declaration) "~" [reduce using rule 274 (export-declaration)] "auto" reduce using rule 207 (declaration) "auto" [reduce using rule 274 (export-declaration)] "char" reduce using rule 207 (declaration) "char" [reduce using rule 274 (export-declaration)] "char8_t" reduce using rule 207 (declaration) "char8_t" [reduce using rule 274 (export-declaration)] "char16_t" reduce using rule 207 (declaration) "char16_t" [reduce using rule 274 (export-declaration)] "char32_t" reduce using rule 207 (declaration) "char32_t" [reduce using rule 274 (export-declaration)] "wchar_t" reduce using rule 207 (declaration) "wchar_t" [reduce using rule 274 (export-declaration)] "bool" reduce using rule 207 (declaration) "bool" [reduce using rule 274 (export-declaration)] "short" reduce using rule 207 (declaration) "short" [reduce using rule 274 (export-declaration)] "int" reduce using rule 207 (declaration) "int" [reduce using rule 274 (export-declaration)] "long" reduce using rule 207 (declaration) "long" [reduce using rule 274 (export-declaration)] "signed" reduce using rule 207 (declaration) "signed" [reduce using rule 274 (export-declaration)] "unsigned" reduce using rule 207 (declaration) "unsigned" [reduce using rule 274 (export-declaration)] "float" reduce using rule 207 (declaration) "float" [reduce using rule 274 (export-declaration)] "double" reduce using rule 207 (declaration) "double" [reduce using rule 274 (export-declaration)] "void" reduce using rule 207 (declaration) "void" [reduce using rule 274 (export-declaration)] "static_assert" reduce using rule 207 (declaration) "static_assert" [reduce using rule 274 (export-declaration)] "static" reduce using rule 207 (declaration) "static" [reduce using rule 274 (export-declaration)] "thread_local" reduce using rule 207 (declaration) "thread_local" [reduce using rule 274 (export-declaration)] "mutable" reduce using rule 207 (declaration) "mutable" [reduce using rule 274 (export-declaration)] $default reduce using rule 207 (declaration)

State 118

694 string-literalSTRING_LITERAL $default reduce using rule 694 (string-literal)

State 119

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 394 | "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "{" shift, and go to state 214 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 215 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 120

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 267 explicit-specialization"template" "<" ">" declaration 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 656 simple-template-id template-name "<" template-argument-list-opt ">" 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 704 | "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 709 template-parameter type-parameter 710 | parameter-declaration 711 template-parameter-list template-parameter 712 | template-parameter-list "," template-parameter 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 725 type-name class-name 726 | enum-name 727 | typedef-name 728 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 729 | type-parameter-key IDENTIFIER-opt "=" type-id 730 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 731 | type-constraint IDENTIFIER-opt "=" type-id 732 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 734 type-parameter-key "class" 735 | "typename" 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 ">" shift, and go to state 219 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 224 template-parameter-list go to state 225 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 121

466 nested-name-specifierdecltype-specifier "::" "::" shift, and go to state 189

State 122

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 745 typename-specifier"typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 229 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 231

State 123

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 232

State 124

26 TYPENAME-opt"typename" $default reduce using rule 26 (TYPENAME-opt)

State 125

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 134 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 126

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 783 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 233 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 127

787 using-enum-declaration"using" elaborated-enum-specifier ";" ";" shift, and go to state 234

State 128

5 ELLIPSIS-opt %empty [",", ";"] 6 | "..." 784 using-declarator-listusing-declarator ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 235

State 129

782 using-declaration"using" using-declarator-list ";" 785 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "," shift, and go to state 236 ";" shift, and go to state 237

State 130

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 216 | "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 286 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 131

246 enum-key"enum" "class" $default reduce using rule 246 (enum-key)

State 132

247 enum-key"enum" "struct" $default reduce using rule 247 (enum-key)

State 133

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 470 nested-name-specifier-optnested-name-specifier [IDENTIFIER] IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 470 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 134

230 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 326

State 135

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 268 explicit-specifier"explicit" "(" constant-expression ")" 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 328 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 136

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty ["export", "module"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 335 global-module-fragment"module" ";" declaration-seq-opt 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 210 (declaration-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 210 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 330 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 137

443 module-name-qualifierIDENTIFIER "." "." shift, and go to state 331

State 138

443 module-name-qualifier IDENTIFIER "." 444 | module-name-qualifier IDENTIFIER "." 445 module-name-qualifier-opt %empty [IDENTIFIER] 446 | module-name-qualifier 447 module-partition":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 137 IDENTIFIER [reduce using rule 445 (module-name-qualifier-opt)] module-name-qualifier go to state 142 module-name-qualifier-opt go to state 332

State 139

342 header-nameHEADER_NAME $default reduce using rule 342 (header-name)

State 140

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 441 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 333

State 141

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 439 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 334

State 142

444 module-name-qualifiermodule-name-qualifier IDENTIFIER "." 446 module-name-qualifier-optmodule-name-qualifier [IDENTIFIER] IDENTIFIER shift, and go to state 335 IDENTIFIER [reduce using rule 446 (module-name-qualifier-opt)]

State 143

442 module-namemodule-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 336

State 144

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 440 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 337

State 145

236 enclosing-namespace-specifierIDENTIFIER ["::"] 456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" "=" shift, and go to state 338 $default reduce using rule 236 (enclosing-namespace-specifier)

State 146

237 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "::" shift, and go to state 339

State 147

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 340 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 148

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 266 | EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 341 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 149

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 766 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 342

State 150

692 storage-class-specifier"extern" $default reduce using rule 692 (storage-class-specifier)

State 151

190 decl-specifier"inline" $default reduce using rule 190 (decl-specifier)

State 152

71 attribute-declarationattribute-specifier-seq ";" $default reduce using rule 71 (attribute-declaration)

State 153

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 351 init-declarator declarator initializer-opt 352 | declarator requires-clause 353 init-declarator-list init-declarator 354 | init-declarator-list "," init-declarator 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 653 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 183 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 init-declarator go to state 184 init-declarator-list go to state 343 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 154

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 344

State 155

333 function-specifierexplicit-specifier $default reduce using rule 333 (function-specifier)

State 156

6 ELLIPSIS-opt"..." $default reduce using rule 6 (ELLIPSIS-opt)

State 157

786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" "namespace" shift, and go to state 345

State 158

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" "(" shift, and go to state 346

State 159

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 347 ptr-declarator go to state 348 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 160

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 606 ptr-operator"&" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 349

State 161

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" "(" shift, and go to state 350

State 162

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "[" shift, and go to state 351

State 163

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 607 ptr-operator"&&" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 352

State 164

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 605 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 353

State 165

139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 215 declarator-idELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 343 id-expression unqualified-id 344 | qualified-id 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 656 simple-template-id template-name "<" template-argument-list-opt ">" 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 "~" shift, and go to state 354 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 355 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 qualified-id go to state 307 simple-template-id go to state 311 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319

State 166

81 attribute-specifieralignment-specifier $default reduce using rule 81 (attribute-specifier)

State 167

82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier $default reduce using rule 82 (attribute-specifier-seq)

State 168

194 decl-specifier-seq-optdecl-specifier-seq ["...", IDENTIFIER, "::", "(", "&", "&&", "operator", "decltype", "*", "~"] 614 ref-qualifier "&" 615 | "&&" 616 ref-qualifier-opt %empty ["["] 617 | ref-qualifier 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "&" shift, and go to state 357 "&&" shift, and go to state 358 "&" [reduce using rule 194 (decl-specifier-seq-opt)] "[" reduce using rule 616 (ref-qualifier-opt) "&&" [reduce using rule 194 (decl-specifier-seq-opt)] $default reduce using rule 194 (decl-specifier-seq-opt) ref-qualifier go to state 359 ref-qualifier-opt go to state 360

State 169

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 361 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 170

487 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" ";" shift, and go to state 362

State 171

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 501 noptr-declaratordeclarator-id attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 363

State 172

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 470 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 608 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 658 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 199 "*" shift, and go to state 364 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 470 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 173

214 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type 502 noptr-declaratornoptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 564 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 603 ptr-declaratornoptr-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" shift, and go to state 365 "[" shift, and go to state 366 "(" [reduce using rule 603 (ptr-declarator)] $default reduce using rule 603 (ptr-declarator) parameters-and-qualifiers go to state 367

State 174

213 declaratorptr-declarator $default reduce using rule 213 (declarator)

State 175

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 347 ptr-declarator go to state 368 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 176

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 144 class-specifierclass-head "{" member-specification-opt "}" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 235 empty-declaration ";" 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 415 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 416 | function-definition 417 | using-declaration 418 | using-enum-declaration 419 | static_assert-declaration 420 | template-declaration 421 | explicit-specialization 422 | deduction-guide 423 | alias-declaration 424 | opaque-enum-declaration 425 | empty-declaration 434 member-specification member-declaration member-specification-opt 435 | access-specifier ":" member-specification-opt 436 member-specification-opt %empty ["}"] 437 | member-specification 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 782 using-declaration "using" using-declarator-list ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 369 "protected" shift, and go to state 370 "public" shift, and go to state 371 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 372 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 436 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 373 alias-declaration go to state 374 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 375 deduction-guide go to state 376 empty-declaration go to state 377 enum-key go to state 378 explicit-specialization go to state 379 explicit-specifier go to state 380 explicit-specifier-opt go to state 76 function-definition go to state 381 member-declaration go to state 382 member-specification go to state 383 member-specification-opt go to state 384 opaque-enum-declaration go to state 385 static_assert-declaration go to state 386 template-declaration go to state 387 template-head go to state 101 using-declaration go to state 388 using-enum-declaration go to state 389

State 177

84 attribute-specifier-seq-optattribute-specifier-seq $default reduce using rule 84 (attribute-specifier-seq-opt)

State 178

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 99 base-clause ":" base-specifier-list 100 base-clause-opt %empty ["{"] 101 | base-clause 133 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 135 class-head-name nested-name-specifier-opt class-name 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 ":" shift, and go to state 390 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] $default reduce using rule 100 (base-clause-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 base-clause go to state 391 base-clause-opt go to state 392 class-head-name go to state 393 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 394 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 179

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 233 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 395

State 180

140 class-namesimple-template-id ["::"] 232 elaborated-type-specifierclass-key simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 744 typedef-namesimple-template-id ["::"] "::" reduce using rule 140 (class-name) "::" [reduce using rule 232 (elaborated-type-specifier)] "::" [reduce using rule 744 (typedef-name)] $default reduce using rule 232 (elaborated-type-specifier)

State 181

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 191 decl-specifier-seqdecl-specifier attribute-specifier-seq-opt [",", "...", IDENTIFIER, "noexcept", "::", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "&&", "operator", "decltype", "->", ">", "*", "requires", "~"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 191 (decl-specifier-seq)] "[" [reduce using rule 191 (decl-specifier-seq)] $default reduce using rule 191 (decl-specifier-seq) alignment-specifier go to state 166 attribute-specifier go to state 167

State 182

192 decl-specifier-seqdecl-specifier decl-specifier-seq $default reduce using rule 192 (decl-specifier-seq)

State 183

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 351 init-declaratordeclarator initializer-opt 352 | declarator requires-clause 362 initializer brace-or-equal-initializer 363 | "(" expression-list ")" 368 initializer-opt %empty [",", ";"] 369 | initializer 633 requires-clause "requires" constraint-logical-or-expression "=" shift, and go to state 396 "(" shift, and go to state 397 "{" shift, and go to state 398 "requires" shift, and go to state 399 $default reduce using rule 368 (initializer-opt) brace-or-equal-initializer go to state 400 braced-init-list go to state 401 initializer go to state 402 initializer-opt go to state 403 requires-clause go to state 404

State 184

353 init-declarator-listinit-declarator $default reduce using rule 353 (init-declarator-list)

State 185

354 init-declarator-listinit-declarator-list "," init-declarator 356 init-declarator-list-optinit-declarator-list [";"] "," shift, and go to state 405 $default reduce using rule 356 (init-declarator-list-opt)

State 186

652 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" ";" shift, and go to state 406

State 187

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 608 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 "*" shift, and go to state 364 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 200

State 188

209 declaration-seqdeclaration-seq declaration $default reduce using rule 209 (declaration-seq)

State 189

466 nested-name-specifierdecltype-specifier "::" $default reduce using rule 466 (nested-name-specifier)

State 190

249 enum-specifierenum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 251 enumerator IDENTIFIER attribute-specifier-seq-opt 252 enumerator-definition enumerator 253 | enumerator "=" constant-expression 254 enumerator-list enumerator-definition 255 | enumerator-list "," enumerator-definition 256 enumerator-list-opt %empty ["}"] 257 | enumerator-list IDENTIFIER shift, and go to state 407 $default reduce using rule 256 (enumerator-list-opt) enumerator go to state 408 enumerator-definition go to state 409 enumerator-list go to state 410 enumerator-list-opt go to state 411

State 191

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 242 enum-head-name nested-name-specifier-opt IDENTIFIER 243 enum-head-name-opt %empty [":", "{"] 244 | enum-head-name 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] $default reduce using rule 243 (enum-head-name-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-head-name go to state 412 enum-head-name-opt go to state 413 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 414 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 192

708 template-nameIDENTIFIER $default reduce using rule 708 (template-name)

State 193

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" "(" shift, and go to state 415

State 194

8 EXPORT-opt"export" $default reduce using rule 8 (EXPORT-opt)

State 195

438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" "module" shift, and go to state 416

State 196

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty [$end, "module"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 718 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 210 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 210 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 417 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 197

465 nested-name-specifiernamespace-name "::" $default reduce using rule 465 (nested-name-specifier)

State 198

467 nested-name-specifiernested-name-specifier IDENTIFIER "::" "::" shift, and go to state 418

State 199

22 TEMPLATE-opt"template" [IDENTIFIER, "operator", "~"] 656 simple-template-id template-name "<" template-argument-list-opt ">" 658 simple-type-specifiernested-name-specifier "template" simple-template-id 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] $default reduce using rule 22 (TEMPLATE-opt) simple-template-id go to state 419 template-name go to state 102

State 200

468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 simple-template-id go to state 420 template-name go to state 102

State 201

139 class-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 153 concept-nameIDENTIFIER ["decltype", "<", "auto"] 248 enum-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 708 template-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 743 typedef-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 139 (class-name) "," [reduce using rule 248 (enum-name)] "," [reduce using rule 708 (template-name)] "," [reduce using rule 743 (typedef-name)] "constexpr" reduce using rule 139 (class-name) "constexpr" [reduce using rule 248 (enum-name)] "constexpr" [reduce using rule 708 (template-name)] "constexpr" [reduce using rule 743 (typedef-name)] "..." reduce using rule 139 (class-name) "..." [reduce using rule 248 (enum-name)] "..." [reduce using rule 708 (template-name)] "..." [reduce using rule 743 (typedef-name)] "export" reduce using rule 139 (class-name) "export" [reduce using rule 248 (enum-name)] "export" [reduce using rule 708 (template-name)] "export" [reduce using rule 743 (typedef-name)] "extern" reduce using rule 139 (class-name) "extern" [reduce using rule 248 (enum-name)] "extern" [reduce using rule 708 (template-name)] "extern" [reduce using rule 743 (typedef-name)] IDENTIFIER reduce using rule 139 (class-name) IDENTIFIER [reduce using rule 248 (enum-name)] IDENTIFIER [reduce using rule 708 (template-name)] IDENTIFIER [reduce using rule 743 (typedef-name)] "inline" reduce using rule 139 (class-name) "inline" [reduce using rule 248 (enum-name)] "inline" [reduce using rule 708 (template-name)] "inline" [reduce using rule 743 (typedef-name)] "noexcept" reduce using rule 139 (class-name) "noexcept" [reduce using rule 248 (enum-name)] "noexcept" [reduce using rule 708 (template-name)] "noexcept" [reduce using rule 743 (typedef-name)] "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 708 (template-name)] "::" [reduce using rule 743 (typedef-name)] "template" reduce using rule 139 (class-name) "template" [reduce using rule 248 (enum-name)] "template" [reduce using rule 708 (template-name)] "template" [reduce using rule 743 (typedef-name)] "typename" reduce using rule 139 (class-name) "typename" [reduce using rule 248 (enum-name)] "typename" [reduce using rule 708 (template-name)] "typename" [reduce using rule 743 (typedef-name)] "virtual" reduce using rule 139 (class-name) "virtual" [reduce using rule 248 (enum-name)] "virtual" [reduce using rule 708 (template-name)] "virtual" [reduce using rule 743 (typedef-name)] "+" reduce using rule 139 (class-name) "+" [reduce using rule 248 (enum-name)] "+" [reduce using rule 708 (template-name)] "+" [reduce using rule 743 (typedef-name)] "-" reduce using rule 139 (class-name) "-" [reduce using rule 248 (enum-name)] "-" [reduce using rule 708 (template-name)] "-" [reduce using rule 743 (typedef-name)] "using" reduce using rule 139 (class-name) "using" [reduce using rule 248 (enum-name)] "using" [reduce using rule 708 (template-name)] "using" [reduce using rule 743 (typedef-name)] "=" reduce using rule 139 (class-name) "=" [reduce using rule 248 (enum-name)] "=" [reduce using rule 708 (template-name)] "=" [reduce using rule 743 (typedef-name)] ";" reduce using rule 139 (class-name) ";" [reduce using rule 248 (enum-name)] ";" [reduce using rule 708 (template-name)] ";" [reduce using rule 743 (typedef-name)] "alignas" reduce using rule 139 (class-name) "alignas" [reduce using rule 248 (enum-name)] "alignas" [reduce using rule 708 (template-name)] "alignas" [reduce using rule 743 (typedef-name)] "(" reduce using rule 139 (class-name) "(" [reduce using rule 248 (enum-name)] "(" [reduce using rule 708 (template-name)] "(" [reduce using rule 743 (typedef-name)] ")" reduce using rule 139 (class-name) ")" [reduce using rule 248 (enum-name)] ")" [reduce using rule 708 (template-name)] ")" [reduce using rule 743 (typedef-name)] "&" reduce using rule 139 (class-name) "&" [reduce using rule 248 (enum-name)] "&" [reduce using rule 708 (template-name)] "&" [reduce using rule 743 (typedef-name)] "asm" reduce using rule 139 (class-name) "asm" [reduce using rule 248 (enum-name)] "asm" [reduce using rule 708 (template-name)] "asm" [reduce using rule 743 (typedef-name)] "*=" reduce using rule 139 (class-name) "*=" [reduce using rule 248 (enum-name)] "*=" [reduce using rule 708 (template-name)] "*=" [reduce using rule 743 (typedef-name)] "/=" reduce using rule 139 (class-name) "/=" [reduce using rule 248 (enum-name)] "/=" [reduce using rule 708 (template-name)] "/=" [reduce using rule 743 (typedef-name)] "%=" reduce using rule 139 (class-name) "%=" [reduce using rule 248 (enum-name)] "%=" [reduce using rule 708 (template-name)] "%=" [reduce using rule 743 (typedef-name)] "+=" reduce using rule 139 (class-name) "+=" [reduce using rule 248 (enum-name)] "+=" [reduce using rule 708 (template-name)] "+=" [reduce using rule 743 (typedef-name)] "-=" reduce using rule 139 (class-name) "-=" [reduce using rule 248 (enum-name)] "-=" [reduce using rule 708 (template-name)] "-=" [reduce using rule 743 (typedef-name)] ">>=" reduce using rule 139 (class-name) ">>=" [reduce using rule 248 (enum-name)] ">>=" [reduce using rule 708 (template-name)] ">>=" [reduce using rule 743 (typedef-name)] "<<=" reduce using rule 139 (class-name) "<<=" [reduce using rule 248 (enum-name)] "<<=" [reduce using rule 708 (template-name)] "<<=" [reduce using rule 743 (typedef-name)] "&=" reduce using rule 139 (class-name) "&=" [reduce using rule 248 (enum-name)] "&=" [reduce using rule 708 (template-name)] "&=" [reduce using rule 743 (typedef-name)] "^=" reduce using rule 139 (class-name) "^=" [reduce using rule 248 (enum-name)] "^=" [reduce using rule 708 (template-name)] "^=" [reduce using rule 743 (typedef-name)] "|=" reduce using rule 139 (class-name) "|=" [reduce using rule 248 (enum-name)] "|=" [reduce using rule 708 (template-name)] "|=" [reduce using rule 743 (typedef-name)] "[" reduce using rule 139 (class-name) "[" [reduce using rule 248 (enum-name)] "[" [reduce using rule 708 (template-name)] "[" [reduce using rule 743 (typedef-name)] "]" reduce using rule 139 (class-name) "]" [reduce using rule 248 (enum-name)] "]" [reduce using rule 708 (template-name)] "]" [reduce using rule 743 (typedef-name)] ":" reduce using rule 139 (class-name) ":" [reduce using rule 248 (enum-name)] ":" [reduce using rule 708 (template-name)] ":" [reduce using rule 743 (typedef-name)] "{" reduce using rule 139 (class-name) "{" [reduce using rule 248 (enum-name)] "{" [reduce using rule 708 (template-name)] "{" [reduce using rule 743 (typedef-name)] "}" reduce using rule 139 (class-name) "}" [reduce using rule 248 (enum-name)] "}" [reduce using rule 708 (template-name)] "}" [reduce using rule 743 (typedef-name)] "class" reduce using rule 139 (class-name) "class" [reduce using rule 248 (enum-name)] "class" [reduce using rule 708 (template-name)] "class" [reduce using rule 743 (typedef-name)] "struct" reduce using rule 139 (class-name) "struct" [reduce using rule 248 (enum-name)] "struct" [reduce using rule 708 (template-name)] "struct" [reduce using rule 743 (typedef-name)] "union" reduce using rule 139 (class-name) "union" [reduce using rule 248 (enum-name)] "union" [reduce using rule 708 (template-name)] "union" [reduce using rule 743 (typedef-name)] "final" reduce using rule 139 (class-name) "final" [reduce using rule 248 (enum-name)] "final" [reduce using rule 708 (template-name)] "final" [reduce using rule 743 (typedef-name)] "<=>" reduce using rule 139 (class-name) "<=>" [reduce using rule 248 (enum-name)] "<=>" [reduce using rule 708 (template-name)] "<=>" [reduce using rule 743 (typedef-name)] "concept" reduce using rule 139 (class-name) "concept" [reduce using rule 248 (enum-name)] "concept" [reduce using rule 708 (template-name)] "concept" [reduce using rule 743 (typedef-name)] "?" reduce using rule 139 (class-name) "?" [reduce using rule 248 (enum-name)] "?" [reduce using rule 708 (template-name)] "?" [reduce using rule 743 (typedef-name)] "&&" reduce using rule 139 (class-name) "&&" [reduce using rule 248 (enum-name)] "&&" [reduce using rule 708 (template-name)] "&&" [reduce using rule 743 (typedef-name)] "||" reduce using rule 139 (class-name) "||" [reduce using rule 248 (enum-name)] "||" [reduce using rule 708 (template-name)] "||" [reduce using rule 743 (typedef-name)] "operator" reduce using rule 139 (class-name) "operator" [reduce using rule 248 (enum-name)] "operator" [reduce using rule 708 (template-name)] "operator" [reduce using rule 743 (typedef-name)] "const" reduce using rule 139 (class-name) "const" [reduce using rule 248 (enum-name)] "const" [reduce using rule 708 (template-name)] "const" [reduce using rule 743 (typedef-name)] "volatile" reduce using rule 139 (class-name) "volatile" [reduce using rule 248 (enum-name)] "volatile" [reduce using rule 708 (template-name)] "volatile" [reduce using rule 743 (typedef-name)] "friend" reduce using rule 139 (class-name) "friend" [reduce using rule 248 (enum-name)] "friend" [reduce using rule 708 (template-name)] "friend" [reduce using rule 743 (typedef-name)] "typedef" reduce using rule 139 (class-name) "typedef" [reduce using rule 248 (enum-name)] "typedef" [reduce using rule 708 (template-name)] "typedef" [reduce using rule 743 (typedef-name)] "consteval" reduce using rule 139 (class-name) "consteval" [reduce using rule 248 (enum-name)] "consteval" [reduce using rule 708 (template-name)] "consteval" [reduce using rule 743 (typedef-name)] "constinit" reduce using rule 139 (class-name) "constinit" [reduce using rule 248 (enum-name)] "constinit" [reduce using rule 708 (template-name)] "constinit" [reduce using rule 743 (typedef-name)] "decltype" reduce using rule 139 (class-name) "decltype" [reduce using rule 153 (concept-name)] "decltype" [reduce using rule 248 (enum-name)] "decltype" [reduce using rule 708 (template-name)] "decltype" [reduce using rule 743 (typedef-name)] "->" reduce using rule 139 (class-name) "->" [reduce using rule 248 (enum-name)] "->" [reduce using rule 708 (template-name)] "->" [reduce using rule 743 (typedef-name)] "." reduce using rule 139 (class-name) "." [reduce using rule 248 (enum-name)] "." [reduce using rule 708 (template-name)] "." [reduce using rule 743 (typedef-name)] "enum" reduce using rule 139 (class-name) "enum" [reduce using rule 248 (enum-name)] "enum" [reduce using rule 708 (template-name)] "enum" [reduce using rule 743 (typedef-name)] "==" reduce using rule 139 (class-name) "==" [reduce using rule 248 (enum-name)] "==" [reduce using rule 708 (template-name)] "==" [reduce using rule 743 (typedef-name)] "!=" reduce using rule 139 (class-name) "!=" [reduce using rule 248 (enum-name)] "!=" [reduce using rule 708 (template-name)] "!=" [reduce using rule 743 (typedef-name)] "^" reduce using rule 139 (class-name) "^" [reduce using rule 248 (enum-name)] "^" [reduce using rule 708 (template-name)] "^" [reduce using rule 743 (typedef-name)] "<" reduce using rule 139 (class-name) "<" [reduce using rule 153 (concept-name)] "<" [reduce using rule 248 (enum-name)] "<" [reduce using rule 708 (template-name)] "<" [reduce using rule 743 (typedef-name)] ">" reduce using rule 139 (class-name) ">" [reduce using rule 248 (enum-name)] ">" [reduce using rule 708 (template-name)] ">" [reduce using rule 743 (typedef-name)] "explicit" reduce using rule 139 (class-name) "explicit" [reduce using rule 248 (enum-name)] "explicit" [reduce using rule 708 (template-name)] "explicit" [reduce using rule 743 (typedef-name)] "*" reduce using rule 139 (class-name) "*" [reduce using rule 248 (enum-name)] "*" [reduce using rule 708 (template-name)] "*" [reduce using rule 743 (typedef-name)] "/" reduce using rule 139 (class-name) "/" [reduce using rule 248 (enum-name)] "/" [reduce using rule 708 (template-name)] "/" [reduce using rule 743 (typedef-name)] "%" reduce using rule 139 (class-name) "%" [reduce using rule 248 (enum-name)] "%" [reduce using rule 708 (template-name)] "%" [reduce using rule 743 (typedef-name)] "|" reduce using rule 139 (class-name) "|" [reduce using rule 248 (enum-name)] "|" [reduce using rule 708 (template-name)] "|" [reduce using rule 743 (typedef-name)] "<<" reduce using rule 139 (class-name) "<<" [reduce using rule 248 (enum-name)] "<<" [reduce using rule 708 (template-name)] "<<" [reduce using rule 743 (typedef-name)] ">>" reduce using rule 139 (class-name) ">>" [reduce using rule 248 (enum-name)] ">>" [reduce using rule 708 (template-name)] ">>" [reduce using rule 743 (typedef-name)] "<=" reduce using rule 139 (class-name) "<=" [reduce using rule 248 (enum-name)] "<=" [reduce using rule 708 (template-name)] "<=" [reduce using rule 743 (typedef-name)] ">=" reduce using rule 139 (class-name) ">=" [reduce using rule 248 (enum-name)] ">=" [reduce using rule 708 (template-name)] ">=" [reduce using rule 743 (typedef-name)] ".*" reduce using rule 139 (class-name) ".*" [reduce using rule 248 (enum-name)] ".*" [reduce using rule 708 (template-name)] ".*" [reduce using rule 743 (typedef-name)] "->*" reduce using rule 139 (class-name) "->*" [reduce using rule 248 (enum-name)] "->*" [reduce using rule 708 (template-name)] "->*" [reduce using rule 743 (typedef-name)] "try" reduce using rule 139 (class-name) "try" [reduce using rule 248 (enum-name)] "try" [reduce using rule 708 (template-name)] "try" [reduce using rule 743 (typedef-name)] "import" reduce using rule 139 (class-name) "import" [reduce using rule 248 (enum-name)] "import" [reduce using rule 708 (template-name)] "import" [reduce using rule 743 (typedef-name)] "namespace" reduce using rule 139 (class-name) "namespace" [reduce using rule 248 (enum-name)] "namespace" [reduce using rule 708 (template-name)] "namespace" [reduce using rule 743 (typedef-name)] "requires" reduce using rule 139 (class-name) "requires" [reduce using rule 248 (enum-name)] "requires" [reduce using rule 708 (template-name)] "requires" [reduce using rule 743 (typedef-name)] "~" reduce using rule 139 (class-name) "~" [reduce using rule 248 (enum-name)] "~" [reduce using rule 708 (template-name)] "~" [reduce using rule 743 (typedef-name)] "++" reduce using rule 139 (class-name) "++" [reduce using rule 248 (enum-name)] "++" [reduce using rule 708 (template-name)] "++" [reduce using rule 743 (typedef-name)] "--" reduce using rule 139 (class-name) "--" [reduce using rule 248 (enum-name)] "--" [reduce using rule 708 (template-name)] "--" [reduce using rule 743 (typedef-name)] "auto" reduce using rule 139 (class-name) "auto" [reduce using rule 153 (concept-name)] "auto" [reduce using rule 248 (enum-name)] "auto" [reduce using rule 708 (template-name)] "auto" [reduce using rule 743 (typedef-name)] "char" reduce using rule 139 (class-name) "char" [reduce using rule 248 (enum-name)] "char" [reduce using rule 708 (template-name)] "char" [reduce using rule 743 (typedef-name)] "char8_t" reduce using rule 139 (class-name) "char8_t" [reduce using rule 248 (enum-name)] "char8_t" [reduce using rule 708 (template-name)] "char8_t" [reduce using rule 743 (typedef-name)] "char16_t" reduce using rule 139 (class-name) "char16_t" [reduce using rule 248 (enum-name)] "char16_t" [reduce using rule 708 (template-name)] "char16_t" [reduce using rule 743 (typedef-name)] "char32_t" reduce using rule 139 (class-name) "char32_t" [reduce using rule 248 (enum-name)] "char32_t" [reduce using rule 708 (template-name)] "char32_t" [reduce using rule 743 (typedef-name)] "wchar_t" reduce using rule 139 (class-name) "wchar_t" [reduce using rule 248 (enum-name)] "wchar_t" [reduce using rule 708 (template-name)] "wchar_t" [reduce using rule 743 (typedef-name)] "bool" reduce using rule 139 (class-name) "bool" [reduce using rule 248 (enum-name)] "bool" [reduce using rule 708 (template-name)] "bool" [reduce using rule 743 (typedef-name)] "short" reduce using rule 139 (class-name) "short" [reduce using rule 248 (enum-name)] "short" [reduce using rule 708 (template-name)] "short" [reduce using rule 743 (typedef-name)] "int" reduce using rule 139 (class-name) "int" [reduce using rule 248 (enum-name)] "int" [reduce using rule 708 (template-name)] "int" [reduce using rule 743 (typedef-name)] "long" reduce using rule 139 (class-name) "long" [reduce using rule 248 (enum-name)] "long" [reduce using rule 708 (template-name)] "long" [reduce using rule 743 (typedef-name)] "signed" reduce using rule 139 (class-name) "signed" [reduce using rule 248 (enum-name)] "signed" [reduce using rule 708 (template-name)] "signed" [reduce using rule 743 (typedef-name)] "unsigned" reduce using rule 139 (class-name) "unsigned" [reduce using rule 248 (enum-name)] "unsigned" [reduce using rule 708 (template-name)] "unsigned" [reduce using rule 743 (typedef-name)] "float" reduce using rule 139 (class-name) "float" [reduce using rule 248 (enum-name)] "float" [reduce using rule 708 (template-name)] "float" [reduce using rule 743 (typedef-name)] "double" reduce using rule 139 (class-name) "double" [reduce using rule 248 (enum-name)] "double" [reduce using rule 708 (template-name)] "double" [reduce using rule 743 (typedef-name)] "void" reduce using rule 139 (class-name) "void" [reduce using rule 248 (enum-name)] "void" [reduce using rule 708 (template-name)] "void" [reduce using rule 743 (typedef-name)] "static_assert" reduce using rule 139 (class-name) "static_assert" [reduce using rule 248 (enum-name)] "static_assert" [reduce using rule 708 (template-name)] "static_assert" [reduce using rule 743 (typedef-name)] "static" reduce using rule 139 (class-name) "static" [reduce using rule 248 (enum-name)] "static" [reduce using rule 708 (template-name)] "static" [reduce using rule 743 (typedef-name)] "thread_local" reduce using rule 139 (class-name) "thread_local" [reduce using rule 248 (enum-name)] "thread_local" [reduce using rule 708 (template-name)] "thread_local" [reduce using rule 743 (typedef-name)] "mutable" reduce using rule 139 (class-name) "mutable" [reduce using rule 248 (enum-name)] "mutable" [reduce using rule 708 (template-name)] "mutable" [reduce using rule 743 (typedef-name)] "override" reduce using rule 139 (class-name) "override" [reduce using rule 248 (enum-name)] "override" [reduce using rule 708 (template-name)] "override" [reduce using rule 743 (typedef-name)] $default reduce using rule 139 (class-name)

State 202

720 type-constraintnested-name-specifier-opt concept-name [",", "...", IDENTIFIER, "=", ";", "decltype", ">", "auto"] 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" "<" shift, and go to state 421 $default reduce using rule 720 (type-constraint)

State 203

656 simple-template-idtemplate-name "<" template-argument-list-opt ">" 661 simple-type-specifiernested-name-specifier-opt template-name [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 208 "<" [reduce using rule 661 (simple-type-specifier)] $default reduce using rule 661 (simple-type-specifier)

State 204

657 simple-type-specifiernested-name-specifier-opt type-name $default reduce using rule 657 (simple-type-specifier)

State 205

152 concept-definition"concept" concept-name "=" constraint-expression ";" 153 concept-name IDENTIFIER IDENTIFIER shift, and go to state 422 concept-name go to state 423

State 206

703 template-declarationtemplate-head concept-definition $default reduce using rule 703 (template-declaration)

State 207

702 template-declarationtemplate-head declaration $default reduce using rule 702 (template-declaration)

State 208

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 656 | template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 695 template-argument constant-expression 696 | type-id 697 | id-expression 698 template-argument-list template-argument ELLIPSIS-opt 699 | template-argument-list "," template-argument ELLIPSIS-opt 700 template-argument-list-opt %empty [">"] 701 | template-argument-list 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] ">" reduce using rule 700 (template-argument-list-opt) "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 425 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 426 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-argument go to state 428 template-argument-list go to state 429 template-argument-list-opt go to state 430 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 431 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 209

566 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" "(" shift, and go to state 435

State 210

565 placeholder-type-specifiertype-constraint-opt "auto" $default reduce using rule 565 (placeholder-type-specifier)

State 211

464 nested-name-specifiertype-name "::" $default reduce using rule 464 (nested-name-specifier)

State 212

0 $acceptresult $end $default accept

State 213

273 export-declaration"export" "{" declaration-seq-opt "}" "}" shift, and go to state 436

State 214

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty ["}"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 394 | "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 210 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 437 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 215

395 linkage-specification"extern" string-literal declaration $default reduce using rule 395 (linkage-specification)

State 216

704 template-head"template" "<" template-parameter-list ">" requires-clause-opt "<" shift, and go to state 438

State 217

735 type-parameter-key"typename" $default reduce using rule 735 (type-parameter-key)

State 218

734 type-parameter-key"class" $default reduce using rule 734 (type-parameter-key)

State 219

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 267 | "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 439 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 220

23 THIS-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 24 | "this" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 554 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause "this" shift, and go to state 440 "alignas" shift, and go to state 158 "[" shift, and go to state 162 $default reduce using rule 23 (THIS-opt) THIS-opt go to state 441 alignment-specifier go to state 166 attribute-specifier go to state 167

State 221

153 concept-name IDENTIFIER 720 type-constraintnested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" IDENTIFIER shift, and go to state 422 concept-name go to state 202

State 222

710 template-parameterparameter-declaration $default reduce using rule 710 (template-parameter)

State 223

732 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 734 type-parameter-key "class" 735 | "typename" "typename" shift, and go to state 217 "class" shift, and go to state 218 type-parameter-key go to state 442

State 224

711 template-parameter-listtemplate-parameter $default reduce using rule 711 (template-parameter-list)

State 225

704 template-head"template" "<" template-parameter-list ">" requires-clause-opt 712 template-parameter-listtemplate-parameter-list "," template-parameter "," shift, and go to state 443 ">" shift, and go to state 444

State 226

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 730 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt 731 | type-constraint IDENTIFIER-opt "=" type-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 446 IDENTIFIER-opt go to state 447

State 227

709 template-parametertype-parameter $default reduce using rule 709 (template-parameter)

State 228

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 728 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt 729 | type-parameter-key IDENTIFIER-opt "=" type-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 448 IDENTIFIER-opt go to state 449

State 229

467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 745 typename-specifier"typename" nested-name-specifier IDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 418 "::" [reduce using rule 745 (typename-specifier)] $default reduce using rule 745 (typename-specifier)

State 230

22 TEMPLATE-opt"template" $default reduce using rule 22 (TEMPLATE-opt)

State 231

468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 746 typename-specifier"typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 192 simple-template-id go to state 450 template-name go to state 102

State 232

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier "=" shift, and go to state 451 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 233

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 171 conversion-function-id "operator" conversion-type-id 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 656 simple-template-id template-name "<" template-argument-list-opt ">" 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 783 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 452 "template" shift, and go to state 230 "operator" shift, and go to state 251 "~" shift, and go to state 354 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 200 conversion-function-id go to state 282 literal-operator-id go to state 295 operator-function-id go to state 302 simple-template-id go to state 453 template-id go to state 314 template-name go to state 102 unqualified-id go to state 454

State 234

787 using-enum-declaration"using" elaborated-enum-specifier ";" $default reduce using rule 787 (using-enum-declaration)

State 235

784 using-declarator-listusing-declarator ELLIPSIS-opt $default reduce using rule 784 (using-declarator-list)

State 236

25 TYPENAME-opt %empty [IDENTIFIER, "::", "decltype"] 26 | "typename" 783 using-declarator TYPENAME-opt nested-name-specifier unqualified-id 785 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "typename" shift, and go to state 124 $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 126 using-declarator go to state 455

State 237

782 using-declaration"using" using-declarator-list ";" $default reduce using rule 782 (using-declaration)

State 238

139 class-nameIDENTIFIER ["::"] 248 enum-nameIDENTIFIER ["::"] 455 namespace-aliasIDENTIFIER ["::"] 461 namespace-nameIDENTIFIER ["::"] 708 template-nameIDENTIFIER ["<"] 743 typedef-nameIDENTIFIER ["::"] 767 unqualified-idIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 455 (namespace-alias)] "::" [reduce using rule 461 (namespace-name)] "::" [reduce using rule 743 (typedef-name)] "::" [reduce using rule 767 (unqualified-id)] "<" reduce using rule 708 (template-name) "<" [reduce using rule 767 (unqualified-id)] $default reduce using rule 767 (unqualified-id)

State 239

488 noexcept-expression"noexcept" "(" expression ")" "(" shift, and go to state 456

State 240

764 unary-operator"!" $default reduce using rule 764 (unary-operator)

State 241

20 SCOPE-opt"::" ["delete", "new"] 463 nested-name-specifier"::" [IDENTIFIER, "template", "operator", "~"] "delete" reduce using rule 20 (SCOPE-opt) "new" reduce using rule 20 (SCOPE-opt) $default reduce using rule 463 (nested-name-specifier)

State 242

590 primary-expression"this" $default reduce using rule 590 (primary-expression)

State 243

762 unary-operator"+" $default reduce using rule 762 (unary-operator)

State 244

763 unary-operator"-" $default reduce using rule 763 (unary-operator)

State 245

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 288 | "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "..." shift, and go to state 457 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 458 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 459 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 460 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 246

761 unary-operator"&" $default reduce using rule 761 (unary-operator)

State 247

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 124 capture simple-capture 125 | init-capture 126 capture-default "&" 127 | "=" 128 capture-list capture 129 | capture-list "," capture 349 init-capture ELLIPSIS-opt IDENTIFIER initializer 350 | "&" ELLIPSIS-opt IDENTIFIER initializer 383 lambda-capture capture-default 384 | capture-list 385 | capture-default "," capture-list 386 lambda-capture-opt %empty ["]"] 387 | lambda-capture 392 lambda-introducer"[" lambda-capture-opt "]" 648 simple-capture IDENTIFIER ELLIPSIS-opt 649 | "&" IDENTIFIER ELLIPSIS-opt 650 | "this" 651 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 461 "this" shift, and go to state 462 "=" shift, and go to state 463 "&" shift, and go to state 464 "*" shift, and go to state 465 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 386 (lambda-capture-opt) ELLIPSIS-opt go to state 466 capture go to state 467 capture-default go to state 468 capture-list go to state 469 init-capture go to state 470 lambda-capture go to state 471 lambda-capture-opt go to state 472 simple-capture go to state 473

State 248

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 90 | "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 474 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 249

116 boolean-literalBOOLEAN_LITERAL $default reduce using rule 116 (boolean-literal)

State 250

132 character-literalCHARACTER_LITERAL $default reduce using rule 132 (character-literal)

State 251

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id"operator" conversion-type-id 172 conversion-type-id type-specifier-seq conversion-declarator-opt 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 403 literal-operator-id"operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 508 operator-function-id"operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 510 overloadable-operator "new" 511 | "delete" 512 | "new" "[" "]" 513 | "delete" "[" "]" 514 | "co_await" 515 | "(" ")" 516 | "[" "]" 517 | "->" 518 | "->*" 519 | "~" 520 | "!" 521 | "+" 522 | "-" 523 | "*" 524 | "/" 525 | "%" 526 | "^" 527 | "&" 528 | "|" 529 | "=" 530 | "+=" 531 | "-=" 532 | "*=" 533 | "/=" 534 | "%=" 535 | "^=" 536 | "&=" 537 | "|=" 538 | "==" 539 | "!=" 540 | "<" 541 | ">" 542 | "<=" 543 | ">=" 544 | "<=>" 545 | "&&" 546 | "||" 547 | "<<" 548 | ">>" 549 | "<<=" 550 | ">>=" 551 | "++" 552 | "--" 553 | "," 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 781 user-defined-string-literal string-literal ud-suffix "," shift, and go to state 475 IDENTIFIER shift, and go to state 4 "!" shift, and go to state 476 "::" shift, and go to state 6 "typename" shift, and go to state 8 "+" shift, and go to state 477 "-" shift, and go to state 478 "=" shift, and go to state 479 "(" shift, and go to state 480 "&" shift, and go to state 481 "*=" shift, and go to state 482 "/=" shift, and go to state 483 "%=" shift, and go to state 484 "+=" shift, and go to state 485 "-=" shift, and go to state 486 ">>=" shift, and go to state 487 "<<=" shift, and go to state 488 "&=" shift, and go to state 489 "^=" shift, and go to state 490 "|=" shift, and go to state 491 "[" shift, and go to state 492 "co_await" shift, and go to state 493 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "<=>" shift, and go to state 494 "&&" shift, and go to state 495 "||" shift, and go to state 496 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "->" shift, and go to state 497 "delete" shift, and go to state 498 "enum" shift, and go to state 125 "==" shift, and go to state 499 "!=" shift, and go to state 500 "^" shift, and go to state 501 "<" shift, and go to state 502 ">" shift, and go to state 503 "*" shift, and go to state 504 "/" shift, and go to state 505 "%" shift, and go to state 506 "|" shift, and go to state 507 "<<" shift, and go to state 508 ">>" shift, and go to state 509 "<=" shift, and go to state 510 ">=" shift, and go to state 511 "->*" shift, and go to state 512 "new" shift, and go to state 513 "~" shift, and go to state 514 "++" shift, and go to state 515 "--" shift, and go to state 516 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 conversion-type-id go to state 517 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 overloadable-operator go to state 518 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 string-literal go to state 519 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 520 typedef-name go to state 108 typename-specifier go to state 109 user-defined-string-literal go to state 521

State 252

287 floating-point-literalFLOATING_POINT_LITERAL $default reduce using rule 287 (floating-point-literal)

State 253

760 unary-operator"*" $default reduce using rule 760 (unary-operator)

State 254

370 integer-literalINTEGER_LITERAL $default reduce using rule 370 (integer-literal)

State 255

628 requirement-parameter-list "(" parameter-declaration-clause ")" 629 requirement-parameter-list-opt %empty ["{"] 630 | requirement-parameter-list 636 requires-expression"requires" requirement-parameter-list-opt requirement-body "(" shift, and go to state 522 $default reduce using rule 629 (requirement-parameter-list-opt) requirement-parameter-list go to state 523 requirement-parameter-list-opt go to state 524

State 256

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 765 unary-operator"~" [IDENTIFIER, "noexcept", "!", "::", "this", "typename", "+", "-", "(", "&", "[", "co_await", BOOLEAN_LITERAL, CHARACTER_LITERAL, "operator", "decltype", "delete", FLOATING_POINT_LITERAL, "*", INTEGER_LITERAL, "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", STRING_LITERAL, "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL] 771 unqualified-id"~" type-name 772 | "~" decltype-specifier IDENTIFIER shift, and go to state 525 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 765 (unary-operator)] "decltype" [reduce using rule 765 (unary-operator)] $default reduce using rule 765 (unary-operator) class-name go to state 55 decltype-specifier go to state 526 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 527 typedef-name go to state 108

State 257

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 528 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 258

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 529 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 259

570 pointer-literalPOINTER_LITERAL $default reduce using rule 570 (pointer-literal)

State 260

582 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 530

State 261

583 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 531

State 262

584 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 532

State 263

585 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 533

State 264

586 postfix-expression"typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" "(" shift, and go to state 534

State 265

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt %empty [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 55 | assignment-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 713 | "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 54 (assignment-expression-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 535 assignment-expression-opt go to state 536 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 266

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix "..." shift, and go to state 537 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 538 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 539 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 267

756 unary-expression"alignof" "(" type-id ")" "(" shift, and go to state 540

State 268

774 user-defined-character-literalUSER_DEFINED_CHARACTER_LITERAL $default reduce using rule 774 (user-defined-character-literal)

State 269

775 user-defined-floating-point-literalUSER_DEFINED_FLOATING_POINT_LITERAL $default reduce using rule 775 (user-defined-floating-point-literal)

State 270

776 user-defined-integer-literalUSER_DEFINED_INTEGER_LITERAL $default reduce using rule 776 (user-defined-integer-literal)

State 271

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 794 | "co_yield" assignment-expression 795 | "co_yield" braced-init-list 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 541 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 542 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 272

224 delete-expressionSCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 477 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt "delete" shift, and go to state 543 "new" shift, and go to state 544

State 273

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 645 shift-expressionadditive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 545 "-" shift, and go to state 546 $default reduce using rule 645 (shift-expression)

State 274

48 and-expressionand-expression "&" equality-expression 264 exclusive-or-expressionand-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] "&" shift, and go to state 547 $default reduce using rule 264 (exclusive-or-expression)

State 275

279 expressionassignment-expression $default reduce using rule 279 (expression)

State 276

752 unary-expressionawait-expression $default reduce using rule 752 (unary-expression)

State 277

400 literalboolean-literal $default reduce using rule 400 (literal)

State 278

567 pm-expressioncast-expression $default reduce using rule 567 (pm-expression)

State 279

397 literalcharacter-literal $default reduce using rule 397 (literal)

State 280

149 compare-expressioncompare-expression "<=>" shift-expression 618 relational-expressioncompare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 548 $default reduce using rule 618 (relational-expression)

State 281

50 assignment-expressionconditional-expression $default reduce using rule 50 (assignment-expression)

State 282

769 unqualified-idconversion-function-id $default reduce using rule 769 (unqualified-id)

State 283

759 unary-expressiondelete-expression $default reduce using rule 759 (unary-expression)

State 284

47 and-expressionequality-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] 259 equality-expressionequality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression "==" shift, and go to state 549 "!=" shift, and go to state 550 $default reduce using rule 47 (and-expression)

State 285

265 exclusive-or-expressionexclusive-or-expression "^" and-expression 347 inclusive-or-expressionexclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">", "|"] "^" shift, and go to state 551 $default reduce using rule 347 (inclusive-or-expression)

State 286

216 decltype-specifier"decltype" "(" expression ")" 280 expressionexpression "," assignment-expression "," shift, and go to state 552 ")" shift, and go to state 553

State 287

398 literalfloating-point-literal $default reduce using rule 398 (literal)

State 288

594 primary-expressionfold-expression $default reduce using rule 594 (primary-expression)

State 289

592 primary-expressionid-expression $default reduce using rule 592 (primary-expression)

State 290

348 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 405 logical-and-expressioninclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">"] "|" shift, and go to state 554 $default reduce using rule 405 (logical-and-expression)

State 291

396 literalinteger-literal $default reduce using rule 396 (literal)

State 292

593 primary-expressionlambda-expression $default reduce using rule 593 (primary-expression)

State 293

133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 193 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->"] 194 | decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 388 lambda-declarator lambda-specifiers 389 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 390 lambda-expressionlambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 393 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "(" shift, and go to state 555 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "<" shift, and go to state 556 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 193 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 557 decl-specifier-seq-opt go to state 558 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 lambda-declarator go to state 559 lambda-specifiers go to state 560 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 294

588 primary-expressionliteral $default reduce using rule 588 (primary-expression)

State 295

707 template-idliteral-operator-id "<" template-argument-list-opt ">" 770 unqualified-idliteral-operator-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 561 "<" [reduce using rule 770 (unqualified-id)] $default reduce using rule 770 (unqualified-id)

State 296

406 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 407 logical-or-expressionlogical-and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "||", ">"] "&&" shift, and go to state 562 $default reduce using rule 407 (logical-or-expression)

State 297

53 assignment-expressionlogical-or-expression assignment-operator initializer-clause 56 assignment-operator "=" 57 | "*=" 58 | "/=" 59 | "%=" 60 | "+=" 61 | "-=" 62 | ">>=" 63 | "<<=" 64 | "&=" 65 | "^=" 66 | "|=" 158 conditional-expressionlogical-or-expression [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 159 | logical-or-expression "?" expression ":" assignment-expression 408 logical-or-expressionlogical-or-expression "||" logical-and-expression "=" shift, and go to state 563 "*=" shift, and go to state 564 "/=" shift, and go to state 565 "%=" shift, and go to state 566 "+=" shift, and go to state 567 "-=" shift, and go to state 568 ">>=" shift, and go to state 569 "<<=" shift, and go to state 570 "&=" shift, and go to state 571 "^=" shift, and go to state 572 "|=" shift, and go to state 573 "?" shift, and go to state 574 "||" shift, and go to state 575 "=" [reduce using rule 158 (conditional-expression)] $default reduce using rule 158 (conditional-expression) assignment-operator go to state 576

State 298

41 additive-expressionmultiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 451 multiplicative-expressionmultiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression "*" shift, and go to state 577 "/" shift, and go to state 578 "%" shift, and go to state 579 $default reduce using rule 41 (additive-expression)

State 299

21 TEMPLATE-opt %empty [IDENTIFIER, "operator", "~"] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 470 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 612 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 658 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 199 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 470 (nested-name-specifier-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 580

State 300

758 unary-expressionnew-expression $default reduce using rule 758 (unary-expression)

State 301

757 unary-expressionnoexcept-expression $default reduce using rule 757 (unary-expression)

State 302

706 template-idoperator-function-id "<" template-argument-list-opt ">" 768 unqualified-idoperator-function-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 581 "<" [reduce using rule 768 (unqualified-id)] $default reduce using rule 768 (unqualified-id)

State 303

450 multiplicative-expressionpm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 568 pm-expressionpm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression ".*" shift, and go to state 582 "->*" shift, and go to state 583 $default reduce using rule 450 (multiplicative-expression)

State 304

401 literalpointer-literal $default reduce using rule 401 (literal)

State 305

572 postfix-expressionpostfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 748 unary-expressionpostfix-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "(" shift, and go to state 584 "[" shift, and go to state 585 "->" shift, and go to state 586 "." shift, and go to state 587 "++" shift, and go to state 588 "--" shift, and go to state 589 $default reduce using rule 748 (unary-expression)

State 306

571 postfix-expressionprimary-expression $default reduce using rule 571 (postfix-expression)

State 307

344 id-expressionqualified-id $default reduce using rule 344 (id-expression)

State 308

258 equality-expressionrelational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", ">", "|"] 619 relational-expressionrelational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression "<" shift, and go to state 590 ">" shift, and go to state 591 "<=" shift, and go to state 592 ">=" shift, and go to state 593 ">" [reduce using rule 258 (equality-expression)] $default reduce using rule 258 (equality-expression)

State 309

595 primary-expressionrequires-expression $default reduce using rule 595 (primary-expression)

State 310

148 compare-expressionshift-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] 646 shift-expressionshift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression "<<" shift, and go to state 594 ">>" shift, and go to state 595 $default reduce using rule 148 (compare-expression)

State 311

140 class-namesimple-template-id ["::"] 705 template-idsimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 744 typedef-namesimple-template-id ["::"] "::" reduce using rule 140 (class-name) "::" [reduce using rule 705 (template-id)] "::" [reduce using rule 744 (typedef-name)] $default reduce using rule 705 (template-id)

State 312

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 574 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list "(" shift, and go to state 596 "{" shift, and go to state 398 braced-init-list go to state 597

State 313

399 literalstring-literal [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 589 primary-expressionstring-literal [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 747 ud-suffix IDENTIFIER 781 user-defined-string-literalstring-literal ud-suffix IDENTIFIER shift, and go to state 598 "," reduce using rule 399 (literal) "," [reduce using rule 589 (primary-expression)] "constexpr" reduce using rule 399 (literal) "constexpr" [reduce using rule 589 (primary-expression)] "..." reduce using rule 399 (literal) "..." [reduce using rule 589 (primary-expression)] "export" reduce using rule 399 (literal) "export" [reduce using rule 589 (primary-expression)] "extern" reduce using rule 399 (literal) "extern" [reduce using rule 589 (primary-expression)] IDENTIFIER [reduce using rule 399 (literal)] IDENTIFIER [reduce using rule 589 (primary-expression)] "inline" reduce using rule 399 (literal) "inline" [reduce using rule 589 (primary-expression)] "noexcept" reduce using rule 399 (literal) "noexcept" [reduce using rule 589 (primary-expression)] "::" reduce using rule 399 (literal) "::" [reduce using rule 589 (primary-expression)] "template" reduce using rule 399 (literal) "template" [reduce using rule 589 (primary-expression)] "typename" reduce using rule 399 (literal) "typename" [reduce using rule 589 (primary-expression)] "virtual" reduce using rule 399 (literal) "virtual" [reduce using rule 589 (primary-expression)] "+" reduce using rule 399 (literal) "+" [reduce using rule 589 (primary-expression)] "-" reduce using rule 399 (literal) "-" [reduce using rule 589 (primary-expression)] "using" reduce using rule 399 (literal) "using" [reduce using rule 589 (primary-expression)] "=" reduce using rule 399 (literal) "=" [reduce using rule 589 (primary-expression)] ";" reduce using rule 399 (literal) ";" [reduce using rule 589 (primary-expression)] "alignas" reduce using rule 399 (literal) "alignas" [reduce using rule 589 (primary-expression)] "(" reduce using rule 399 (literal) "(" [reduce using rule 589 (primary-expression)] ")" reduce using rule 399 (literal) ")" [reduce using rule 589 (primary-expression)] "&" reduce using rule 399 (literal) "&" [reduce using rule 589 (primary-expression)] "asm" reduce using rule 399 (literal) "asm" [reduce using rule 589 (primary-expression)] "*=" reduce using rule 399 (literal) "*=" [reduce using rule 589 (primary-expression)] "/=" reduce using rule 399 (literal) "/=" [reduce using rule 589 (primary-expression)] "%=" reduce using rule 399 (literal) "%=" [reduce using rule 589 (primary-expression)] "+=" reduce using rule 399 (literal) "+=" [reduce using rule 589 (primary-expression)] "-=" reduce using rule 399 (literal) "-=" [reduce using rule 589 (primary-expression)] ">>=" reduce using rule 399 (literal) ">>=" [reduce using rule 589 (primary-expression)] "<<=" reduce using rule 399 (literal) "<<=" [reduce using rule 589 (primary-expression)] "&=" reduce using rule 399 (literal) "&=" [reduce using rule 589 (primary-expression)] "^=" reduce using rule 399 (literal) "^=" [reduce using rule 589 (primary-expression)] "|=" reduce using rule 399 (literal) "|=" [reduce using rule 589 (primary-expression)] "[" reduce using rule 399 (literal) "[" [reduce using rule 589 (primary-expression)] "]" reduce using rule 399 (literal) "]" [reduce using rule 589 (primary-expression)] ":" reduce using rule 399 (literal) ":" [reduce using rule 589 (primary-expression)] "{" reduce using rule 399 (literal) "{" [reduce using rule 589 (primary-expression)] "}" reduce using rule 399 (literal) "}" [reduce using rule 589 (primary-expression)] "class" reduce using rule 399 (literal) "class" [reduce using rule 589 (primary-expression)] "struct" reduce using rule 399 (literal) "struct" [reduce using rule 589 (primary-expression)] "union" reduce using rule 399 (literal) "union" [reduce using rule 589 (primary-expression)] "<=>" reduce using rule 399 (literal) "<=>" [reduce using rule 589 (primary-expression)] "concept" reduce using rule 399 (literal) "concept" [reduce using rule 589 (primary-expression)] "?" reduce using rule 399 (literal) "?" [reduce using rule 589 (primary-expression)] "&&" reduce using rule 399 (literal) "&&" [reduce using rule 589 (primary-expression)] "||" reduce using rule 399 (literal) "||" [reduce using rule 589 (primary-expression)] "operator" reduce using rule 399 (literal) "operator" [reduce using rule 589 (primary-expression)] "const" reduce using rule 399 (literal) "const" [reduce using rule 589 (primary-expression)] "volatile" reduce using rule 399 (literal) "volatile" [reduce using rule 589 (primary-expression)] "friend" reduce using rule 399 (literal) "friend" [reduce using rule 589 (primary-expression)] "typedef" reduce using rule 399 (literal) "typedef" [reduce using rule 589 (primary-expression)] "consteval" reduce using rule 399 (literal) "consteval" [reduce using rule 589 (primary-expression)] "constinit" reduce using rule 399 (literal) "constinit" [reduce using rule 589 (primary-expression)] "decltype" reduce using rule 399 (literal) "decltype" [reduce using rule 589 (primary-expression)] "->" reduce using rule 399 (literal) "->" [reduce using rule 589 (primary-expression)] "." reduce using rule 399 (literal) "." [reduce using rule 589 (primary-expression)] "enum" reduce using rule 399 (literal) "enum" [reduce using rule 589 (primary-expression)] "==" reduce using rule 399 (literal) "==" [reduce using rule 589 (primary-expression)] "!=" reduce using rule 399 (literal) "!=" [reduce using rule 589 (primary-expression)] "^" reduce using rule 399 (literal) "^" [reduce using rule 589 (primary-expression)] "<" reduce using rule 399 (literal) "<" [reduce using rule 589 (primary-expression)] ">" reduce using rule 399 (literal) ">" [reduce using rule 589 (primary-expression)] "explicit" reduce using rule 399 (literal) "explicit" [reduce using rule 589 (primary-expression)] "*" reduce using rule 399 (literal) "*" [reduce using rule 589 (primary-expression)] "/" reduce using rule 399 (literal) "/" [reduce using rule 589 (primary-expression)] "%" reduce using rule 399 (literal) "%" [reduce using rule 589 (primary-expression)] "|" reduce using rule 399 (literal) "|" [reduce using rule 589 (primary-expression)] "<<" reduce using rule 399 (literal) "<<" [reduce using rule 589 (primary-expression)] ">>" reduce using rule 399 (literal) ">>" [reduce using rule 589 (primary-expression)] "<=" reduce using rule 399 (literal) "<=" [reduce using rule 589 (primary-expression)] ">=" reduce using rule 399 (literal) ">=" [reduce using rule 589 (primary-expression)] ".*" reduce using rule 399 (literal) ".*" [reduce using rule 589 (primary-expression)] "->*" reduce using rule 399 (literal) "->*" [reduce using rule 589 (primary-expression)] "try" reduce using rule 399 (literal) "try" [reduce using rule 589 (primary-expression)] "import" reduce using rule 399 (literal) "import" [reduce using rule 589 (primary-expression)] "namespace" reduce using rule 399 (literal) "namespace" [reduce using rule 589 (primary-expression)] "~" reduce using rule 399 (literal) "~" [reduce using rule 589 (primary-expression)] "++" reduce using rule 399 (literal) "++" [reduce using rule 589 (primary-expression)] "--" reduce using rule 399 (literal) "--" [reduce using rule 589 (primary-expression)] "auto" reduce using rule 399 (literal) "auto" [reduce using rule 589 (primary-expression)] "char" reduce using rule 399 (literal) "char" [reduce using rule 589 (primary-expression)] "char8_t" reduce using rule 399 (literal) "char8_t" [reduce using rule 589 (primary-expression)] "char16_t" reduce using rule 399 (literal) "char16_t" [reduce using rule 589 (primary-expression)] "char32_t" reduce using rule 399 (literal) "char32_t" [reduce using rule 589 (primary-expression)] "wchar_t" reduce using rule 399 (literal) "wchar_t" [reduce using rule 589 (primary-expression)] "bool" reduce using rule 399 (literal) "bool" [reduce using rule 589 (primary-expression)] "short" reduce using rule 399 (literal) "short" [reduce using rule 589 (primary-expression)] "int" reduce using rule 399 (literal) "int" [reduce using rule 589 (primary-expression)] "long" reduce using rule 399 (literal) "long" [reduce using rule 589 (primary-expression)] "signed" reduce using rule 399 (literal) "signed" [reduce using rule 589 (primary-expression)] "unsigned" reduce using rule 399 (literal) "unsigned" [reduce using rule 589 (primary-expression)] "float" reduce using rule 399 (literal) "float" [reduce using rule 589 (primary-expression)] "double" reduce using rule 399 (literal) "double" [reduce using rule 589 (primary-expression)] "void" reduce using rule 399 (literal) "void" [reduce using rule 589 (primary-expression)] "static_assert" reduce using rule 399 (literal) "static_assert" [reduce using rule 589 (primary-expression)] "static" reduce using rule 399 (literal) "static" [reduce using rule 589 (primary-expression)] "thread_local" reduce using rule 399 (literal) "thread_local" [reduce using rule 589 (primary-expression)] "mutable" reduce using rule 399 (literal) "mutable" [reduce using rule 589 (primary-expression)] $default reduce using rule 399 (literal) ud-suffix go to state 599

State 314

773 unqualified-idtemplate-id $default reduce using rule 773 (unqualified-id)

State 315

52 assignment-expressionthrow-expression $default reduce using rule 52 (assignment-expression)

State 316

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 575 postfix-expressiontypename-specifier "(" expression-list-opt ")" 577 | typename-specifier braced-init-list "(" shift, and go to state 600 "{" shift, and go to state 398 braced-init-list go to state 601

State 317

130 cast-expressionunary-expression $default reduce using rule 130 (cast-expression)

State 318

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 602 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 319

343 id-expressionunqualified-id $default reduce using rule 343 (id-expression)

State 320

780 user-defined-literaluser-defined-character-literal $default reduce using rule 780 (user-defined-literal)

State 321

778 user-defined-literaluser-defined-floating-point-literal $default reduce using rule 778 (user-defined-literal)

State 322

777 user-defined-literaluser-defined-integer-literal $default reduce using rule 777 (user-defined-literal)

State 323

402 literaluser-defined-literal $default reduce using rule 402 (literal)

State 324

779 user-defined-literaluser-defined-string-literal $default reduce using rule 779 (user-defined-literal)

State 325

51 assignment-expressionyield-expression $default reduce using rule 51 (assignment-expression)

State 326

230 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER $default reduce using rule 230 (elaborated-enum-specifier)

State 327

160 constant-expressionconditional-expression $default reduce using rule 160 (constant-expression)

State 328

268 explicit-specifier"explicit" "(" constant-expression ")" ")" shift, and go to state 603

State 329

158 conditional-expressionlogical-or-expression [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 159 | logical-or-expression "?" expression ":" assignment-expression 408 logical-or-expressionlogical-or-expression "||" logical-and-expression "?" shift, and go to state 574 "||" shift, and go to state 575 $default reduce using rule 158 (conditional-expression)

State 330

335 global-module-fragment"module" ";" declaration-seq-opt $default reduce using rule 335 (global-module-fragment)

State 331

443 module-name-qualifierIDENTIFIER "." $default reduce using rule 443 (module-name-qualifier)

State 332

447 module-partition":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 604

State 333

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 441 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" ";" shift, and go to state 605 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 334

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 439 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" ";" shift, and go to state 606 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 335

444 module-name-qualifiermodule-name-qualifier IDENTIFIER "." "." shift, and go to state 607

State 336

442 module-namemodule-name-qualifier-opt IDENTIFIER $default reduce using rule 442 (module-name)

State 337

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 440 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" ";" shift, and go to state 608 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 338

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 613 qualified-namespace-specifier nested-name-specifier-opt namespace-name 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 609 qualified-namespace-specifier go to state 610 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 339

13 INLINE-opt %empty [IDENTIFIER] 14 | "inline" 237 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "inline" shift, and go to state 611 $default reduce using rule 13 (INLINE-opt) INLINE-opt go to state 612

State 340

688 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" "," shift, and go to state 613 ")" shift, and go to state 614

State 341

266 explicit-instantiationEXTERN-opt "template" declaration $default reduce using rule 266 (explicit-instantiation)

State 342

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 766 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" IDENTIFIER shift, and go to state 615 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "{" shift, and go to state 616 alignment-specifier go to state 166 attribute-specifier go to state 167

State 343

354 init-declarator-listinit-declarator-list "," init-declarator 653 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" "," shift, and go to state 405 ";" shift, and go to state 617

State 344

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 242 enum-head-name nested-name-specifier-opt IDENTIFIER 243 enum-head-name-opt %empty [":", "{"] 244 | enum-head-name 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] $default reduce using rule 243 (enum-head-name-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-head-name go to state 618 enum-head-name-opt go to state 413 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 414 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 345

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 619 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 346

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 620 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 621 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 347

502 noptr-declaratornoptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 564 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 603 ptr-declaratornoptr-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" shift, and go to state 365 "[" shift, and go to state 366 "(" [reduce using rule 603 (ptr-declarator)] $default reduce using rule 603 (ptr-declarator) parameters-and-qualifiers go to state 622

State 348

504 noptr-declarator"(" ptr-declarator ")" ")" shift, and go to state 623

State 349

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 606 ptr-operator"&" attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 606 (ptr-operator)] "[" [reduce using rule 606 (ptr-operator)] $default reduce using rule 606 (ptr-operator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 350

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 694 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 118 string-literal go to state 624

State 351

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 87 attribute-using-prefix "using" attribute-namespace ":" 88 attribute-using-prefix-opt %empty [",", IDENTIFIER, "]"] 89 | attribute-using-prefix "using" shift, and go to state 625 $default reduce using rule 88 (attribute-using-prefix-opt) attribute-using-prefix go to state 626 attribute-using-prefix-opt go to state 627

State 352

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 607 ptr-operator"&&" attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 607 (ptr-operator)] "[" [reduce using rule 607 (ptr-operator)] $default reduce using rule 607 (ptr-operator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 353

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 177 cv-qualifier "const" 178 | "volatile" 179 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 180 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 181 | cv-qualifier-seq 605 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt "alignas" shift, and go to state 158 "[" shift, and go to state 162 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "alignas" [reduce using rule 180 (cv-qualifier-seq-opt)] "[" [reduce using rule 180 (cv-qualifier-seq-opt)] "const" [reduce using rule 180 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 180 (cv-qualifier-seq-opt)] $default reduce using rule 180 (cv-qualifier-seq-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 cv-qualifier go to state 628 cv-qualifier-seq go to state 629 cv-qualifier-seq-opt go to state 630

State 354

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 771 unqualified-id"~" type-name 772 | "~" decltype-specifier IDENTIFIER shift, and go to state 525 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 526 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 527 typedef-name go to state 108

State 355

215 declarator-idELLIPSIS-opt id-expression $default reduce using rule 215 (declarator-id)

State 356

21 TEMPLATE-opt %empty [IDENTIFIER, "operator", "~"] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 612 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 580

State 357

614 ref-qualifier"&" $default reduce using rule 614 (ref-qualifier)

State 358

615 ref-qualifier"&&" $default reduce using rule 615 (ref-qualifier)

State 359

617 ref-qualifier-optref-qualifier $default reduce using rule 617 (ref-qualifier-opt)

State 360

654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "[" shift, and go to state 631

State 361

330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 633 requires-clause "requires" constraint-logical-or-expression 788 virt-specifier "override" 789 | "final" 790 virt-specifier-seq virt-specifier 791 | virt-specifier-seq virt-specifier 792 virt-specifier-seq-opt %empty ["=", ":", "{", "try"] 793 | virt-specifier-seq "final" shift, and go to state 632 "requires" shift, and go to state 399 "override" shift, and go to state 633 $default reduce using rule 792 (virt-specifier-seq-opt) requires-clause go to state 634 virt-specifier go to state 635 virt-specifier-seq go to state 636 virt-specifier-seq-opt go to state 637

State 362

487 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" $default reduce using rule 487 (nodeclspec-function-declaration)

State 363

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 501 noptr-declaratordeclarator-id attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 501 (noptr-declarator)] $default reduce using rule 501 (noptr-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 364

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 608 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 638

State 365

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 558 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 559 | parameter-declaration-list "," "..." 560 parameter-declaration-list parameter-declaration 561 | parameter-declaration-list "," parameter-declaration 562 parameter-declaration-list-opt %empty ["...", ")"] 563 | parameter-declaration-list 564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "..." reduce using rule 562 (parameter-declaration-list-opt) ")" reduce using rule 562 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 639 parameter-declaration-clause go to state 640 parameter-declaration-list go to state 641 parameter-declaration-list-opt go to state 642

State 366

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 161 constant-expression-opt %empty ["]"] 162 | constant-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 503 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "]" reduce using rule 161 (constant-expression-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 643 constant-expression-opt go to state 644 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 367

214 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type 502 noptr-declaratornoptr-declarator parameters-and-qualifiers [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] 714 trailing-return-type "->" type-id "->" shift, and go to state 645 $default reduce using rule 502 (noptr-declarator) trailing-return-type go to state 646

State 368

604 ptr-declaratorptr-operator ptr-declarator $default reduce using rule 604 (ptr-declarator)

State 369

36 access-specifier"private" $default reduce using rule 36 (access-specifier)

State 370

37 access-specifier"protected" $default reduce using rule 37 (access-specifier)

State 371

38 access-specifier"public" $default reduce using rule 38 (access-specifier)

State 372

245 enum-key"enum" [IDENTIFIER, "::", "alignas", "[", "decltype"] 246 | "enum" "class" 247 | "enum" "struct" "class" shift, and go to state 131 "struct" shift, and go to state 132 $default reduce using rule 245 (enum-key)

State 373

435 member-specificationaccess-specifier ":" member-specification-opt ":" shift, and go to state 647

State 374

423 member-declarationalias-declaration $default reduce using rule 423 (member-declaration)

State 375

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 193 decl-specifier-seq-opt %empty ["...", IDENTIFIER, "::", ";", "alignas", "(", "&", "[", ":", "&&", "operator", "decltype", "*", "~"] 194 | decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 415 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 193 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 193 (decl-specifier-seq-opt)] "alignas" [reduce using rule 193 (decl-specifier-seq-opt)] "[" [reduce using rule 193 (decl-specifier-seq-opt)] "decltype" [reduce using rule 193 (decl-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 193 (decl-specifier-seq-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 557 decl-specifier-seq-opt go to state 648 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 376

422 member-declarationdeduction-guide $default reduce using rule 422 (member-declaration)

State 377

425 member-declarationempty-declaration $default reduce using rule 425 (member-declaration)

State 378

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 649

State 379

421 member-declarationexplicit-specialization $default reduce using rule 421 (member-declaration)

State 380

271 explicit-specifier-optexplicit-specifier $default reduce using rule 271 (explicit-specifier-opt)

State 381

416 member-declarationfunction-definition $default reduce using rule 416 (member-declaration)

State 382

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 235 empty-declaration ";" 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 415 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 416 | function-definition 417 | using-declaration 418 | using-enum-declaration 419 | static_assert-declaration 420 | template-declaration 421 | explicit-specialization 422 | deduction-guide 423 | alias-declaration 424 | opaque-enum-declaration 425 | empty-declaration 434 member-specification member-declaration member-specification-opt 434 | member-declaration member-specification-opt 435 | access-specifier ":" member-specification-opt 436 member-specification-opt %empty ["}"] 437 | member-specification 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 782 using-declaration "using" using-declarator-list ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 369 "protected" shift, and go to state 370 "public" shift, and go to state 371 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 372 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 436 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 373 alias-declaration go to state 374 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 375 deduction-guide go to state 376 empty-declaration go to state 377 enum-key go to state 378 explicit-specialization go to state 379 explicit-specifier go to state 380 explicit-specifier-opt go to state 76 function-definition go to state 381 member-declaration go to state 382 member-specification go to state 383 member-specification-opt go to state 650 opaque-enum-declaration go to state 385 static_assert-declaration go to state 386 template-declaration go to state 387 template-head go to state 101 using-declaration go to state 388 using-enum-declaration go to state 389

State 383

437 member-specification-optmember-specification $default reduce using rule 437 (member-specification-opt)

State 384

144 class-specifierclass-head "{" member-specification-opt "}" "}" shift, and go to state 651

State 385

424 member-declarationopaque-enum-declaration $default reduce using rule 424 (member-declaration)

State 386

419 member-declarationstatic_assert-declaration $default reduce using rule 419 (member-declaration)

State 387

420 member-declarationtemplate-declaration $default reduce using rule 420 (member-declaration)

State 388

417 member-declarationusing-declaration $default reduce using rule 417 (member-declaration)

State 389

418 member-declarationusing-enum-declaration $default reduce using rule 418 (member-declaration)

State 390

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 99 base-clause":" base-specifier-list 102 base-specifier attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-list base-specifier ELLIPSIS-opt 106 | base-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 652 base-specifier go to state 653 base-specifier-list go to state 654

State 391

101 base-clause-optbase-clause $default reduce using rule 101 (base-clause-opt)

State 392

134 class-headclass-key attribute-specifier-seq-opt base-clause-opt $default reduce using rule 134 (class-head)

State 393

133 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 145 class-virt-specifier "final" 146 class-virt-specifier-opt %empty [":", "{"] 147 | class-virt-specifier "final" shift, and go to state 655 $default reduce using rule 146 (class-virt-specifier-opt) class-virt-specifier go to state 656 class-virt-specifier-opt go to state 657

State 394

135 class-head-namenested-name-specifier-opt class-name 139 class-name IDENTIFIER 140 | simple-template-id 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 658 class-name go to state 659 simple-template-id go to state 660 template-name go to state 102

State 395

233 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id 468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 simple-template-id go to state 661 template-name go to state 102

State 396

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 117 brace-or-equal-initializer"=" initializer-clause 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 664 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 397

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 363 initializer"(" expression-list ")" 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 665 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 398

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 226 designated-initializer-clause designator brace-or-equal-initializer 227 designated-initializer-list designated-initializer-clause 228 | designated-initializer-list "," designated-initializer-clause 229 designator "." IDENTIFIER 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 "}" shift, and go to state 668 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 "." shift, and go to state 669 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 designated-initializer-clause go to state 670 designated-initializer-list go to state 671 designator go to state 672 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 673 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 399

116 boolean-literal BOOLEAN_LITERAL 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 164 constraint-logical-and-expression primary-expression 165 | constraint-logical-and-expression "&&" primary-expression 166 constraint-logical-or-expression constraint-logical-and-expression 167 | constraint-logical-or-expression "||" constraint-logical-and-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 570 pointer-literal POINTER_LITERAL 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 633 requires-clause"requires" constraint-logical-or-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "this" shift, and go to state 242 "(" shift, and go to state 674 "[" shift, and go to state 247 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 354 POINTER_LITERAL shift, and go to state 259 STRING_LITERAL shift, and go to state 118 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 boolean-literal go to state 277 character-literal go to state 279 class-name go to state 55 constraint-logical-and-expression go to state 675 constraint-logical-or-expression go to state 676 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 pointer-literal go to state 304 primary-expression go to state 677 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 400

362 initializerbrace-or-equal-initializer $default reduce using rule 362 (initializer)

State 401

118 brace-or-equal-initializerbraced-init-list $default reduce using rule 118 (brace-or-equal-initializer)

State 402

369 initializer-optinitializer $default reduce using rule 369 (initializer-opt)

State 403

351 init-declaratordeclarator initializer-opt $default reduce using rule 351 (init-declarator)

State 404

352 init-declaratordeclarator requires-clause $default reduce using rule 352 (init-declarator)

State 405

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 351 init-declarator declarator initializer-opt 352 | declarator requires-clause 354 init-declarator-listinit-declarator-list "," init-declarator 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 183 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 init-declarator go to state 678 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 406

652 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" $default reduce using rule 652 (simple-declaration)

State 407

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 251 enumeratorIDENTIFIER attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 679

State 408

252 enumerator-definitionenumerator [",", "}"] 253 | enumerator "=" constant-expression "=" shift, and go to state 680 $default reduce using rule 252 (enumerator-definition)

State 409

254 enumerator-listenumerator-definition $default reduce using rule 254 (enumerator-list)

State 410

250 enum-specifierenum-head "{" enumerator-list "," "}" 255 enumerator-listenumerator-list "," enumerator-definition 257 enumerator-list-optenumerator-list ["}"] "," shift, and go to state 681 $default reduce using rule 257 (enumerator-list-opt)

State 411

249 enum-specifierenum-head "{" enumerator-list-opt "}" "}" shift, and go to state 682

State 412

238 enum-base ":" type-specifier-seq 239 enum-base-opt %empty [";"] 240 | enum-base 244 enum-head-name-optenum-head-name [":", "{"] 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ":" shift, and go to state 683 ":" [reduce using rule 244 (enum-head-name-opt)] "{" reduce using rule 244 (enum-head-name-opt) $default reduce using rule 239 (enum-base-opt) enum-base go to state 684 enum-base-opt go to state 685

State 413

238 enum-base ":" type-specifier-seq 239 enum-base-opt %empty ["{"] 240 | enum-base 241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt ":" shift, and go to state 683 $default reduce using rule 239 (enum-base-opt) enum-base go to state 684 enum-base-opt go to state 686

State 414

242 enum-head-namenested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 687

State 415

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 558 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 559 | parameter-declaration-list "," "..." 560 parameter-declaration-list parameter-declaration 561 | parameter-declaration-list "," parameter-declaration 562 parameter-declaration-list-opt %empty ["...", ")"] 563 | parameter-declaration-list "..." reduce using rule 562 (parameter-declaration-list-opt) ")" reduce using rule 562 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 639 parameter-declaration-clause go to state 688 parameter-declaration-list go to state 641 parameter-declaration-list-opt go to state 642

State 416

438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 442 module-name module-name-qualifier-opt IDENTIFIER 443 module-name-qualifier IDENTIFIER "." 444 | module-name-qualifier IDENTIFIER "." 445 module-name-qualifier-opt %empty [IDENTIFIER] 446 | module-name-qualifier IDENTIFIER shift, and go to state 137 IDENTIFIER [reduce using rule 445 (module-name-qualifier-opt)] module-name go to state 689 module-name-qualifier go to state 142 module-name-qualifier-opt go to state 143

State 417

596 private-module-fragment "module" ":" "private" ";" declaration-seq-opt 597 private-module-fragment-opt %empty [$end] 598 | private-module-fragment 718 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt "module" shift, and go to state 690 $default reduce using rule 597 (private-module-fragment-opt) private-module-fragment go to state 691 private-module-fragment-opt go to state 692

State 418

467 nested-name-specifiernested-name-specifier IDENTIFIER "::" $default reduce using rule 467 (nested-name-specifier)

State 419

658 simple-type-specifiernested-name-specifier "template" simple-template-id $default reduce using rule 658 (simple-type-specifier)

State 420

468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" "::" shift, and go to state 693

State 421

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 695 template-argument constant-expression 696 | type-id 697 | id-expression 698 template-argument-list template-argument ELLIPSIS-opt 699 | template-argument-list "," template-argument ELLIPSIS-opt 700 template-argument-list-opt %empty [">"] 701 | template-argument-list 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] ">" reduce using rule 700 (template-argument-list-opt) "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 425 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 426 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-argument go to state 428 template-argument-list go to state 429 template-argument-list-opt go to state 694 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 431 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 422

153 concept-nameIDENTIFIER $default reduce using rule 153 (concept-name)

State 423

152 concept-definition"concept" concept-name "=" constraint-expression ";" "=" shift, and go to state 695

State 424

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "alignas", "[", "decltype"] 84 | attribute-specifier-seq 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 696 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 179 simple-template-id go to state 180 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 425

695 template-argumentconstant-expression $default reduce using rule 695 (template-argument)

State 426

592 primary-expressionid-expression [",", "...", "+", "-", "(", "&", "[", "<=>", "?", "&&", "||", "->", ".", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "++", "--"] 697 template-argumentid-expression [",", "...", ">"] "," reduce using rule 592 (primary-expression) "," [reduce using rule 697 (template-argument)] "..." reduce using rule 592 (primary-expression) "..." [reduce using rule 697 (template-argument)] ">" reduce using rule 592 (primary-expression) ">" [reduce using rule 697 (template-argument)] $default reduce using rule 592 (primary-expression)

State 427

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 574 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 737 type-specifiersimple-type-specifier [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", ")", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", ">", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 596 "{" shift, and go to state 398 "(" [reduce using rule 737 (type-specifier)] $default reduce using rule 737 (type-specifier) braced-init-list go to state 597

State 428

5 ELLIPSIS-opt %empty [",", ">"] 6 | "..." 698 template-argument-listtemplate-argument ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 697

State 429

699 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt 701 template-argument-list-opttemplate-argument-list [">"] "," shift, and go to state 698 $default reduce using rule 701 (template-argument-list-opt)

State 430

656 simple-template-idtemplate-name "<" template-argument-list-opt ">" ">" shift, and go to state 699

State 431

696 template-argumenttype-id $default reduce using rule 696 (template-argument)

State 432

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 84 | attribute-specifier-seq 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 741 | type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 700 class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 701 typedef-name go to state 108 typename-specifier go to state 109

State 433

29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 724 type-idtype-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 702 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 703 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 32 (abstract-declarator-opt)] "(" [reduce using rule 32 (abstract-declarator-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] "[" reduce using rule 496 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 704 abstract-declarator-opt go to state 705 abstract-pack-declarator go to state 706 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 708 noptr-abstract-pack-declarator go to state 709 ptr-abstract-declarator go to state 710 ptr-operator go to state 711 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 434

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 575 postfix-expressiontypename-specifier "(" expression-list-opt ")" 577 | typename-specifier braced-init-list 739 type-specifiertypename-specifier [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", ")", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", ">", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 600 "{" shift, and go to state 398 "(" [reduce using rule 739 (type-specifier)] $default reduce using rule 739 (type-specifier) braced-init-list go to state 601

State 435

566 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" "auto" shift, and go to state 712

State 436

273 export-declaration"export" "{" declaration-seq-opt "}" $default reduce using rule 273 (export-declaration)

State 437

394 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" "}" shift, and go to state 713

State 438

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 656 simple-template-id template-name "<" template-argument-list-opt ">" 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 704 | "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 709 template-parameter type-parameter 710 | parameter-declaration 711 template-parameter-list template-parameter 712 | template-parameter-list "," template-parameter 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 725 type-name class-name 726 | enum-name 727 | typedef-name 728 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 729 | type-parameter-key IDENTIFIER-opt "=" type-id 730 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 731 | type-constraint IDENTIFIER-opt "=" type-id 732 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 734 type-parameter-key "class" 735 | "typename" 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 224 template-parameter-list go to state 225 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 439

267 explicit-specialization"template" "<" ">" declaration $default reduce using rule 267 (explicit-specialization)

State 440

24 THIS-opt"this" $default reduce using rule 24 (THIS-opt)

State 441

133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 554 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 714 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 442

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 732 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression "..." shift, and go to state 156 IDENTIFIER shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 715 IDENTIFIER-opt go to state 716

State 443

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 656 simple-template-id template-name "<" template-argument-list-opt ">" 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 709 template-parameter type-parameter 710 | parameter-declaration 712 template-parameter-listtemplate-parameter-list "," template-parameter 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 725 type-name class-name 726 | enum-name 727 | typedef-name 728 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 729 | type-parameter-key IDENTIFIER-opt "=" type-id 730 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 731 | type-constraint IDENTIFIER-opt "=" type-id 732 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 734 type-parameter-key "class" 735 | "typename" 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 717 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 444

633 requires-clause "requires" constraint-logical-or-expression 634 requires-clause-opt %empty ["constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "using", ";", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "concept", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 635 | requires-clause 704 template-head"template" "<" template-parameter-list ">" requires-clause-opt "requires" shift, and go to state 399 $default reduce using rule 634 (requires-clause-opt) requires-clause go to state 718 requires-clause-opt go to state 719

State 445

12 IDENTIFIER-optIDENTIFIER $default reduce using rule 12 (IDENTIFIER-opt)

State 446

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 730 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 445 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 720

State 447

731 type-parametertype-constraint IDENTIFIER-opt "=" type-id "=" shift, and go to state 721

State 448

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 728 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 445 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 722

State 449

729 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id "=" shift, and go to state 723

State 450

468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 746 typename-specifier"typename" nested-name-specifier TEMPLATE-opt simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 693 "::" [reduce using rule 746 (typename-specifier)] $default reduce using rule 746 (typename-specifier)

State 451

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 218 defining-type-id defining-type-specifier-seq abstract-declarator-opt 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 222 defining-type-specifier-seq defining-type-specifier attribute-specifier-seq-opt 223 | defining-type-specifier defining-type-specifier-seq 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-id go to state 724 defining-type-specifier go to state 725 defining-type-specifier-seq go to state 726 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 452

467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 708 template-nameIDENTIFIER ["<"] 767 unqualified-idIDENTIFIER [",", "...", ";"] "::" shift, and go to state 418 "<" reduce using rule 708 (template-name) $default reduce using rule 767 (unqualified-id)

State 453

705 template-idsimple-template-id $default reduce using rule 705 (template-id)

State 454

783 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id $default reduce using rule 783 (using-declarator)

State 455

5 ELLIPSIS-opt %empty [",", ";"] 6 | "..." 785 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 727

State 456

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 488 | "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 728 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 457

289 fold-expression"(" "..." fold-operator cast-expression ")" 291 fold-operator "+" 292 | "-" 293 | "*" 294 | "/" 295 | "%" 296 | "^" 297 | "&" 298 | "|" 299 | "<<" 300 | ">>" 301 | "+=" 302 | "-=" 303 | "*=" 304 | "/=" 305 | "%=" 306 | "^=" 307 | "&=" 308 | "|=" 309 | "<<=" 310 | ">>=" 311 | "=" 312 | "==" 313 | "!=" 314 | "<" 315 | ">" 316 | "<=" 317 | ">=" 318 | "&&" 319 | "||" 320 | "," 321 | ".*" 322 | "->*" "," shift, and go to state 729 "+" shift, and go to state 730 "-" shift, and go to state 731 "=" shift, and go to state 732 "&" shift, and go to state 733 "*=" shift, and go to state 734 "/=" shift, and go to state 735 "%=" shift, and go to state 736 "+=" shift, and go to state 737 "-=" shift, and go to state 738 ">>=" shift, and go to state 739 "<<=" shift, and go to state 740 "&=" shift, and go to state 741 "^=" shift, and go to state 742 "|=" shift, and go to state 743 "&&" shift, and go to state 744 "||" shift, and go to state 745 "==" shift, and go to state 746 "!=" shift, and go to state 747 "^" shift, and go to state 748 "<" shift, and go to state 749 ">" shift, and go to state 750 "*" shift, and go to state 751 "/" shift, and go to state 752 "%" shift, and go to state 753 "|" shift, and go to state 754 "<<" shift, and go to state 755 ">>" shift, and go to state 756 "<=" shift, and go to state 757 ">=" shift, and go to state 758 ".*" shift, and go to state 759 "->*" shift, and go to state 760 fold-operator go to state 761

State 458

288 fold-expression"(" cast-expression fold-operator "..." ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 291 fold-operator "+" 292 | "-" 293 | "*" 294 | "/" 295 | "%" 296 | "^" 297 | "&" 298 | "|" 299 | "<<" 300 | ">>" 301 | "+=" 302 | "-=" 303 | "*=" 304 | "/=" 305 | "%=" 306 | "^=" 307 | "&=" 308 | "|=" 309 | "<<=" 310 | ">>=" 311 | "=" 312 | "==" 313 | "!=" 314 | "<" 315 | ">" 316 | "<=" 317 | ">=" 318 | "&&" 319 | "||" 320 | "," 321 | ".*" 322 | "->*" 567 pm-expressioncast-expression [",", "+", "-", "=", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "," shift, and go to state 729 "+" shift, and go to state 730 "-" shift, and go to state 731 "=" shift, and go to state 732 "&" shift, and go to state 733 "*=" shift, and go to state 734 "/=" shift, and go to state 735 "%=" shift, and go to state 736 "+=" shift, and go to state 737 "-=" shift, and go to state 738 ">>=" shift, and go to state 739 "<<=" shift, and go to state 740 "&=" shift, and go to state 741 "^=" shift, and go to state 742 "|=" shift, and go to state 743 "&&" shift, and go to state 744 "||" shift, and go to state 745 "==" shift, and go to state 746 "!=" shift, and go to state 747 "^" shift, and go to state 748 "<" shift, and go to state 749 ">" shift, and go to state 750 "*" shift, and go to state 751 "/" shift, and go to state 752 "%" shift, and go to state 753 "|" shift, and go to state 754 "<<" shift, and go to state 755 ">>" shift, and go to state 756 "<=" shift, and go to state 757 ">=" shift, and go to state 758 ".*" shift, and go to state 759 "->*" shift, and go to state 760 "," [reduce using rule 567 (pm-expression)] "+" [reduce using rule 567 (pm-expression)] "-" [reduce using rule 567 (pm-expression)] "=" [reduce using rule 567 (pm-expression)] "&" [reduce using rule 567 (pm-expression)] "*=" [reduce using rule 567 (pm-expression)] "/=" [reduce using rule 567 (pm-expression)] "%=" [reduce using rule 567 (pm-expression)] "+=" [reduce using rule 567 (pm-expression)] "-=" [reduce using rule 567 (pm-expression)] ">>=" [reduce using rule 567 (pm-expression)] "<<=" [reduce using rule 567 (pm-expression)] "&=" [reduce using rule 567 (pm-expression)] "^=" [reduce using rule 567 (pm-expression)] "|=" [reduce using rule 567 (pm-expression)] "&&" [reduce using rule 567 (pm-expression)] "||" [reduce using rule 567 (pm-expression)] "==" [reduce using rule 567 (pm-expression)] "!=" [reduce using rule 567 (pm-expression)] "^" [reduce using rule 567 (pm-expression)] "<" [reduce using rule 567 (pm-expression)] ">" [reduce using rule 567 (pm-expression)] "*" [reduce using rule 567 (pm-expression)] "/" [reduce using rule 567 (pm-expression)] "%" [reduce using rule 567 (pm-expression)] "|" [reduce using rule 567 (pm-expression)] "<<" [reduce using rule 567 (pm-expression)] ">>" [reduce using rule 567 (pm-expression)] "<=" [reduce using rule 567 (pm-expression)] ">=" [reduce using rule 567 (pm-expression)] ".*" [reduce using rule 567 (pm-expression)] "->*" [reduce using rule 567 (pm-expression)] $default reduce using rule 567 (pm-expression) fold-operator go to state 762

State 459

280 expressionexpression "," assignment-expression 591 primary-expression"(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 763

State 460

131 cast-expression"(" type-id ")" cast-expression ")" shift, and go to state 764

State 461

5 ELLIPSIS-opt %empty [",", "]"] 6 | "..." 648 simple-captureIDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 765

State 462

650 simple-capture"this" $default reduce using rule 650 (simple-capture)

State 463

127 capture-default"=" $default reduce using rule 127 (capture-default)

State 464

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 126 capture-default"&" [",", "]"] 350 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 649 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 IDENTIFIER shift, and go to state 766 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 126 (capture-default) ELLIPSIS-opt go to state 767

State 465

651 simple-capture"*" "this" "this" shift, and go to state 768

State 466

349 init-captureELLIPSIS-opt IDENTIFIER initializer IDENTIFIER shift, and go to state 769

State 467

128 capture-listcapture $default reduce using rule 128 (capture-list)

State 468

383 lambda-capturecapture-default ["]"] 385 | capture-default "," capture-list "," shift, and go to state 770 $default reduce using rule 383 (lambda-capture)

State 469

129 capture-listcapture-list "," capture 384 lambda-capturecapture-list ["]"] "," shift, and go to state 771 $default reduce using rule 384 (lambda-capture)

State 470

125 captureinit-capture $default reduce using rule 125 (capture)

State 471

387 lambda-capture-optlambda-capture $default reduce using rule 387 (lambda-capture-opt)

State 472

392 lambda-introducer"[" lambda-capture-opt "]" "]" shift, and go to state 772

State 473

124 capturesimple-capture $default reduce using rule 124 (capture)

State 474

90 await-expression"co_await" cast-expression $default reduce using rule 90 (await-expression)

State 475

553 overloadable-operator"," $default reduce using rule 553 (overloadable-operator)

State 476

520 overloadable-operator"!" $default reduce using rule 520 (overloadable-operator)

State 477

521 overloadable-operator"+" $default reduce using rule 521 (overloadable-operator)

State 478

522 overloadable-operator"-" $default reduce using rule 522 (overloadable-operator)

State 479

529 overloadable-operator"=" $default reduce using rule 529 (overloadable-operator)

State 480

515 overloadable-operator"(" ")" ")" shift, and go to state 773

State 481

527 overloadable-operator"&" $default reduce using rule 527 (overloadable-operator)

State 482

532 overloadable-operator"*=" $default reduce using rule 532 (overloadable-operator)

State 483

533 overloadable-operator"/=" $default reduce using rule 533 (overloadable-operator)

State 484

534 overloadable-operator"%=" $default reduce using rule 534 (overloadable-operator)

State 485

530 overloadable-operator"+=" $default reduce using rule 530 (overloadable-operator)

State 486

531 overloadable-operator"-=" $default reduce using rule 531 (overloadable-operator)

State 487

550 overloadable-operator">>=" $default reduce using rule 550 (overloadable-operator)

State 488

549 overloadable-operator"<<=" $default reduce using rule 549 (overloadable-operator)

State 489

536 overloadable-operator"&=" $default reduce using rule 536 (overloadable-operator)

State 490

535 overloadable-operator"^=" $default reduce using rule 535 (overloadable-operator)

State 491

537 overloadable-operator"|=" $default reduce using rule 537 (overloadable-operator)

State 492

516 overloadable-operator"[" "]" "]" shift, and go to state 774

State 493

514 overloadable-operator"co_await" $default reduce using rule 514 (overloadable-operator)

State 494

544 overloadable-operator"<=>" $default reduce using rule 544 (overloadable-operator)

State 495

545 overloadable-operator"&&" $default reduce using rule 545 (overloadable-operator)

State 496

546 overloadable-operator"||" $default reduce using rule 546 (overloadable-operator)

State 497

517 overloadable-operator"->" $default reduce using rule 517 (overloadable-operator)

State 498

511 overloadable-operator"delete" [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 513 | "delete" "[" "]" "[" shift, and go to state 775 "[" [reduce using rule 511 (overloadable-operator)] $default reduce using rule 511 (overloadable-operator)

State 499

538 overloadable-operator"==" $default reduce using rule 538 (overloadable-operator)

State 500

539 overloadable-operator"!=" $default reduce using rule 539 (overloadable-operator)

State 501

526 overloadable-operator"^" $default reduce using rule 526 (overloadable-operator)

State 502

540 overloadable-operator"<" $default reduce using rule 540 (overloadable-operator)

State 503

541 overloadable-operator">" $default reduce using rule 541 (overloadable-operator)

State 504

523 overloadable-operator"*" $default reduce using rule 523 (overloadable-operator)

State 505

524 overloadable-operator"/" $default reduce using rule 524 (overloadable-operator)

State 506

525 overloadable-operator"%" $default reduce using rule 525 (overloadable-operator)

State 507

528 overloadable-operator"|" $default reduce using rule 528 (overloadable-operator)

State 508

547 overloadable-operator"<<" $default reduce using rule 547 (overloadable-operator)

State 509

548 overloadable-operator">>" $default reduce using rule 548 (overloadable-operator)

State 510

542 overloadable-operator"<=" $default reduce using rule 542 (overloadable-operator)

State 511

543 overloadable-operator">=" $default reduce using rule 543 (overloadable-operator)

State 512

518 overloadable-operator"->*" $default reduce using rule 518 (overloadable-operator)

State 513

510 overloadable-operator"new" [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 512 | "new" "[" "]" "[" shift, and go to state 776 "[" [reduce using rule 510 (overloadable-operator)] $default reduce using rule 510 (overloadable-operator)

State 514

519 overloadable-operator"~" $default reduce using rule 519 (overloadable-operator)

State 515

551 overloadable-operator"++" $default reduce using rule 551 (overloadable-operator)

State 516

552 overloadable-operator"--" $default reduce using rule 552 (overloadable-operator)

State 517

171 conversion-function-id"operator" conversion-type-id $default reduce using rule 171 (conversion-function-id)

State 518

508 operator-function-id"operator" overloadable-operator [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" "<" shift, and go to state 777 "<" [reduce using rule 508 (operator-function-id)] $default reduce using rule 508 (operator-function-id)

State 519

403 literal-operator-id"operator" string-literal IDENTIFIER 747 ud-suffix IDENTIFIER 781 user-defined-string-literalstring-literal ud-suffix IDENTIFIER shift, and go to state 778 ud-suffix go to state 599

State 520

139 class-name IDENTIFIER 140 | simple-template-id 168 conversion-declarator ptr-operator conversion-declarator-opt 169 conversion-declarator-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 170 | conversion-declarator 172 conversion-type-idtype-specifier-seq conversion-declarator-opt 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 169 (conversion-declarator-opt)] "::" [reduce using rule 169 (conversion-declarator-opt)] "&" [reduce using rule 169 (conversion-declarator-opt)] "&&" [reduce using rule 169 (conversion-declarator-opt)] "decltype" [reduce using rule 169 (conversion-declarator-opt)] "*" [reduce using rule 169 (conversion-declarator-opt)] $default reduce using rule 169 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 779 conversion-declarator-opt go to state 780 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 ptr-operator go to state 781 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 521

404 literal-operator-id"operator" user-defined-string-literal $default reduce using rule 404 (literal-operator-id)

State 522

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 558 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 559 | parameter-declaration-list "," "..." 560 parameter-declaration-list parameter-declaration 561 | parameter-declaration-list "," parameter-declaration 562 parameter-declaration-list-opt %empty ["...", ")"] 563 | parameter-declaration-list 628 requirement-parameter-list"(" parameter-declaration-clause ")" "..." reduce using rule 562 (parameter-declaration-list-opt) ")" reduce using rule 562 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 639 parameter-declaration-clause go to state 782 parameter-declaration-list go to state 641 parameter-declaration-list-opt go to state 642

State 523

630 requirement-parameter-list-optrequirement-parameter-list $default reduce using rule 630 (requirement-parameter-list-opt)

State 524

627 requirement-body "{" requirement-seq "}" 636 requires-expression"requires" requirement-parameter-list-opt requirement-body "{" shift, and go to state 783 requirement-body go to state 784

State 525

139 class-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 248 enum-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 708 template-nameIDENTIFIER ["<"] 743 typedef-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 139 (class-name) "," [reduce using rule 248 (enum-name)] "," [reduce using rule 743 (typedef-name)] "constexpr" reduce using rule 139 (class-name) "constexpr" [reduce using rule 248 (enum-name)] "constexpr" [reduce using rule 743 (typedef-name)] "..." reduce using rule 139 (class-name) "..." [reduce using rule 248 (enum-name)] "..." [reduce using rule 743 (typedef-name)] "export" reduce using rule 139 (class-name) "export" [reduce using rule 248 (enum-name)] "export" [reduce using rule 743 (typedef-name)] "extern" reduce using rule 139 (class-name) "extern" [reduce using rule 248 (enum-name)] "extern" [reduce using rule 743 (typedef-name)] IDENTIFIER reduce using rule 139 (class-name) IDENTIFIER [reduce using rule 248 (enum-name)] IDENTIFIER [reduce using rule 743 (typedef-name)] "inline" reduce using rule 139 (class-name) "inline" [reduce using rule 248 (enum-name)] "inline" [reduce using rule 743 (typedef-name)] "noexcept" reduce using rule 139 (class-name) "noexcept" [reduce using rule 248 (enum-name)] "noexcept" [reduce using rule 743 (typedef-name)] "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 743 (typedef-name)] "template" reduce using rule 139 (class-name) "template" [reduce using rule 248 (enum-name)] "template" [reduce using rule 743 (typedef-name)] "typename" reduce using rule 139 (class-name) "typename" [reduce using rule 248 (enum-name)] "typename" [reduce using rule 743 (typedef-name)] "virtual" reduce using rule 139 (class-name) "virtual" [reduce using rule 248 (enum-name)] "virtual" [reduce using rule 743 (typedef-name)] "+" reduce using rule 139 (class-name) "+" [reduce using rule 248 (enum-name)] "+" [reduce using rule 743 (typedef-name)] "-" reduce using rule 139 (class-name) "-" [reduce using rule 248 (enum-name)] "-" [reduce using rule 743 (typedef-name)] "using" reduce using rule 139 (class-name) "using" [reduce using rule 248 (enum-name)] "using" [reduce using rule 743 (typedef-name)] "=" reduce using rule 139 (class-name) "=" [reduce using rule 248 (enum-name)] "=" [reduce using rule 743 (typedef-name)] ";" reduce using rule 139 (class-name) ";" [reduce using rule 248 (enum-name)] ";" [reduce using rule 743 (typedef-name)] "alignas" reduce using rule 139 (class-name) "alignas" [reduce using rule 248 (enum-name)] "alignas" [reduce using rule 743 (typedef-name)] "(" reduce using rule 139 (class-name) "(" [reduce using rule 248 (enum-name)] "(" [reduce using rule 743 (typedef-name)] ")" reduce using rule 139 (class-name) ")" [reduce using rule 248 (enum-name)] ")" [reduce using rule 743 (typedef-name)] "&" reduce using rule 139 (class-name) "&" [reduce using rule 248 (enum-name)] "&" [reduce using rule 743 (typedef-name)] "asm" reduce using rule 139 (class-name) "asm" [reduce using rule 248 (enum-name)] "asm" [reduce using rule 743 (typedef-name)] "*=" reduce using rule 139 (class-name) "*=" [reduce using rule 248 (enum-name)] "*=" [reduce using rule 743 (typedef-name)] "/=" reduce using rule 139 (class-name) "/=" [reduce using rule 248 (enum-name)] "/=" [reduce using rule 743 (typedef-name)] "%=" reduce using rule 139 (class-name) "%=" [reduce using rule 248 (enum-name)] "%=" [reduce using rule 743 (typedef-name)] "+=" reduce using rule 139 (class-name) "+=" [reduce using rule 248 (enum-name)] "+=" [reduce using rule 743 (typedef-name)] "-=" reduce using rule 139 (class-name) "-=" [reduce using rule 248 (enum-name)] "-=" [reduce using rule 743 (typedef-name)] ">>=" reduce using rule 139 (class-name) ">>=" [reduce using rule 248 (enum-name)] ">>=" [reduce using rule 743 (typedef-name)] "<<=" reduce using rule 139 (class-name) "<<=" [reduce using rule 248 (enum-name)] "<<=" [reduce using rule 743 (typedef-name)] "&=" reduce using rule 139 (class-name) "&=" [reduce using rule 248 (enum-name)] "&=" [reduce using rule 743 (typedef-name)] "^=" reduce using rule 139 (class-name) "^=" [reduce using rule 248 (enum-name)] "^=" [reduce using rule 743 (typedef-name)] "|=" reduce using rule 139 (class-name) "|=" [reduce using rule 248 (enum-name)] "|=" [reduce using rule 743 (typedef-name)] "[" reduce using rule 139 (class-name) "[" [reduce using rule 248 (enum-name)] "[" [reduce using rule 743 (typedef-name)] "]" reduce using rule 139 (class-name) "]" [reduce using rule 248 (enum-name)] "]" [reduce using rule 743 (typedef-name)] ":" reduce using rule 139 (class-name) ":" [reduce using rule 248 (enum-name)] ":" [reduce using rule 743 (typedef-name)] "{" reduce using rule 139 (class-name) "{" [reduce using rule 248 (enum-name)] "{" [reduce using rule 743 (typedef-name)] "}" reduce using rule 139 (class-name) "}" [reduce using rule 248 (enum-name)] "}" [reduce using rule 743 (typedef-name)] "class" reduce using rule 139 (class-name) "class" [reduce using rule 248 (enum-name)] "class" [reduce using rule 743 (typedef-name)] "struct" reduce using rule 139 (class-name) "struct" [reduce using rule 248 (enum-name)] "struct" [reduce using rule 743 (typedef-name)] "union" reduce using rule 139 (class-name) "union" [reduce using rule 248 (enum-name)] "union" [reduce using rule 743 (typedef-name)] "final" reduce using rule 139 (class-name) "final" [reduce using rule 248 (enum-name)] "final" [reduce using rule 743 (typedef-name)] "<=>" reduce using rule 139 (class-name) "<=>" [reduce using rule 248 (enum-name)] "<=>" [reduce using rule 743 (typedef-name)] "concept" reduce using rule 139 (class-name) "concept" [reduce using rule 248 (enum-name)] "concept" [reduce using rule 743 (typedef-name)] "?" reduce using rule 139 (class-name) "?" [reduce using rule 248 (enum-name)] "?" [reduce using rule 743 (typedef-name)] "&&" reduce using rule 139 (class-name) "&&" [reduce using rule 248 (enum-name)] "&&" [reduce using rule 743 (typedef-name)] "||" reduce using rule 139 (class-name) "||" [reduce using rule 248 (enum-name)] "||" [reduce using rule 743 (typedef-name)] "operator" reduce using rule 139 (class-name) "operator" [reduce using rule 248 (enum-name)] "operator" [reduce using rule 743 (typedef-name)] "const" reduce using rule 139 (class-name) "const" [reduce using rule 248 (enum-name)] "const" [reduce using rule 743 (typedef-name)] "volatile" reduce using rule 139 (class-name) "volatile" [reduce using rule 248 (enum-name)] "volatile" [reduce using rule 743 (typedef-name)] "friend" reduce using rule 139 (class-name) "friend" [reduce using rule 248 (enum-name)] "friend" [reduce using rule 743 (typedef-name)] "typedef" reduce using rule 139 (class-name) "typedef" [reduce using rule 248 (enum-name)] "typedef" [reduce using rule 743 (typedef-name)] "consteval" reduce using rule 139 (class-name) "consteval" [reduce using rule 248 (enum-name)] "consteval" [reduce using rule 743 (typedef-name)] "constinit" reduce using rule 139 (class-name) "constinit" [reduce using rule 248 (enum-name)] "constinit" [reduce using rule 743 (typedef-name)] "decltype" reduce using rule 139 (class-name) "decltype" [reduce using rule 248 (enum-name)] "decltype" [reduce using rule 743 (typedef-name)] "->" reduce using rule 139 (class-name) "->" [reduce using rule 248 (enum-name)] "->" [reduce using rule 743 (typedef-name)] "." reduce using rule 139 (class-name) "." [reduce using rule 248 (enum-name)] "." [reduce using rule 743 (typedef-name)] "enum" reduce using rule 139 (class-name) "enum" [reduce using rule 248 (enum-name)] "enum" [reduce using rule 743 (typedef-name)] "==" reduce using rule 139 (class-name) "==" [reduce using rule 248 (enum-name)] "==" [reduce using rule 743 (typedef-name)] "!=" reduce using rule 139 (class-name) "!=" [reduce using rule 248 (enum-name)] "!=" [reduce using rule 743 (typedef-name)] "^" reduce using rule 139 (class-name) "^" [reduce using rule 248 (enum-name)] "^" [reduce using rule 743 (typedef-name)] "<" reduce using rule 139 (class-name) "<" [reduce using rule 248 (enum-name)] "<" [reduce using rule 708 (template-name)] "<" [reduce using rule 743 (typedef-name)] ">" reduce using rule 139 (class-name) ">" [reduce using rule 248 (enum-name)] ">" [reduce using rule 743 (typedef-name)] "explicit" reduce using rule 139 (class-name) "explicit" [reduce using rule 248 (enum-name)] "explicit" [reduce using rule 743 (typedef-name)] "*" reduce using rule 139 (class-name) "*" [reduce using rule 248 (enum-name)] "*" [reduce using rule 743 (typedef-name)] "/" reduce using rule 139 (class-name) "/" [reduce using rule 248 (enum-name)] "/" [reduce using rule 743 (typedef-name)] "%" reduce using rule 139 (class-name) "%" [reduce using rule 248 (enum-name)] "%" [reduce using rule 743 (typedef-name)] "|" reduce using rule 139 (class-name) "|" [reduce using rule 248 (enum-name)] "|" [reduce using rule 743 (typedef-name)] "<<" reduce using rule 139 (class-name) "<<" [reduce using rule 248 (enum-name)] "<<" [reduce using rule 743 (typedef-name)] ">>" reduce using rule 139 (class-name) ">>" [reduce using rule 248 (enum-name)] ">>" [reduce using rule 743 (typedef-name)] "<=" reduce using rule 139 (class-name) "<=" [reduce using rule 248 (enum-name)] "<=" [reduce using rule 743 (typedef-name)] ">=" reduce using rule 139 (class-name) ">=" [reduce using rule 248 (enum-name)] ">=" [reduce using rule 743 (typedef-name)] ".*" reduce using rule 139 (class-name) ".*" [reduce using rule 248 (enum-name)] ".*" [reduce using rule 743 (typedef-name)] "->*" reduce using rule 139 (class-name) "->*" [reduce using rule 248 (enum-name)] "->*" [reduce using rule 743 (typedef-name)] "try" reduce using rule 139 (class-name) "try" [reduce using rule 248 (enum-name)] "try" [reduce using rule 743 (typedef-name)] "import" reduce using rule 139 (class-name) "import" [reduce using rule 248 (enum-name)] "import" [reduce using rule 743 (typedef-name)] "namespace" reduce using rule 139 (class-name) "namespace" [reduce using rule 248 (enum-name)] "namespace" [reduce using rule 743 (typedef-name)] "requires" reduce using rule 139 (class-name) "requires" [reduce using rule 248 (enum-name)] "requires" [reduce using rule 743 (typedef-name)] "~" reduce using rule 139 (class-name) "~" [reduce using rule 248 (enum-name)] "~" [reduce using rule 743 (typedef-name)] "++" reduce using rule 139 (class-name) "++" [reduce using rule 248 (enum-name)] "++" [reduce using rule 743 (typedef-name)] "--" reduce using rule 139 (class-name) "--" [reduce using rule 248 (enum-name)] "--" [reduce using rule 743 (typedef-name)] "auto" reduce using rule 139 (class-name) "auto" [reduce using rule 248 (enum-name)] "auto" [reduce using rule 743 (typedef-name)] "char" reduce using rule 139 (class-name) "char" [reduce using rule 248 (enum-name)] "char" [reduce using rule 743 (typedef-name)] "char8_t" reduce using rule 139 (class-name) "char8_t" [reduce using rule 248 (enum-name)] "char8_t" [reduce using rule 743 (typedef-name)] "char16_t" reduce using rule 139 (class-name) "char16_t" [reduce using rule 248 (enum-name)] "char16_t" [reduce using rule 743 (typedef-name)] "char32_t" reduce using rule 139 (class-name) "char32_t" [reduce using rule 248 (enum-name)] "char32_t" [reduce using rule 743 (typedef-name)] "wchar_t" reduce using rule 139 (class-name) "wchar_t" [reduce using rule 248 (enum-name)] "wchar_t" [reduce using rule 743 (typedef-name)] "bool" reduce using rule 139 (class-name) "bool" [reduce using rule 248 (enum-name)] "bool" [reduce using rule 743 (typedef-name)] "short" reduce using rule 139 (class-name) "short" [reduce using rule 248 (enum-name)] "short" [reduce using rule 743 (typedef-name)] "int" reduce using rule 139 (class-name) "int" [reduce using rule 248 (enum-name)] "int" [reduce using rule 743 (typedef-name)] "long" reduce using rule 139 (class-name) "long" [reduce using rule 248 (enum-name)] "long" [reduce using rule 743 (typedef-name)] "signed" reduce using rule 139 (class-name) "signed" [reduce using rule 248 (enum-name)] "signed" [reduce using rule 743 (typedef-name)] "unsigned" reduce using rule 139 (class-name) "unsigned" [reduce using rule 248 (enum-name)] "unsigned" [reduce using rule 743 (typedef-name)] "float" reduce using rule 139 (class-name) "float" [reduce using rule 248 (enum-name)] "float" [reduce using rule 743 (typedef-name)] "double" reduce using rule 139 (class-name) "double" [reduce using rule 248 (enum-name)] "double" [reduce using rule 743 (typedef-name)] "void" reduce using rule 139 (class-name) "void" [reduce using rule 248 (enum-name)] "void" [reduce using rule 743 (typedef-name)] "static_assert" reduce using rule 139 (class-name) "static_assert" [reduce using rule 248 (enum-name)] "static_assert" [reduce using rule 743 (typedef-name)] "static" reduce using rule 139 (class-name) "static" [reduce using rule 248 (enum-name)] "static" [reduce using rule 743 (typedef-name)] "thread_local" reduce using rule 139 (class-name) "thread_local" [reduce using rule 248 (enum-name)] "thread_local" [reduce using rule 743 (typedef-name)] "mutable" reduce using rule 139 (class-name) "mutable" [reduce using rule 248 (enum-name)] "mutable" [reduce using rule 743 (typedef-name)] "override" reduce using rule 139 (class-name) "override" [reduce using rule 248 (enum-name)] "override" [reduce using rule 743 (typedef-name)] $default reduce using rule 139 (class-name)

State 526

772 unqualified-id"~" decltype-specifier $default reduce using rule 772 (unqualified-id)

State 527

771 unqualified-id"~" type-name $default reduce using rule 771 (unqualified-id)

State 528

750 unary-expression"++" cast-expression $default reduce using rule 750 (unary-expression)

State 529

751 unary-expression"--" cast-expression $default reduce using rule 751 (unary-expression)

State 530

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 582 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 785 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 531

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 583 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 786 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 532

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 584 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 787 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 533

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 585 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 788 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 534

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 789 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 790 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 535

55 assignment-expression-optassignment-expression $default reduce using rule 55 (assignment-expression-opt)

State 536

713 throw-expression"throw" assignment-expression-opt $default reduce using rule 713 (throw-expression)

State 537

755 unary-expression"sizeof" "..." "(" IDENTIFIER ")" "(" shift, and go to state 791

State 538

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 288 | "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "..." shift, and go to state 457 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 458 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 459 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 792 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 539

753 unary-expression"sizeof" unary-expression $default reduce using rule 753 (unary-expression)

State 540

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 756 unary-expression"alignof" "(" type-id ")" IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 793 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 541

794 yield-expression"co_yield" assignment-expression $default reduce using rule 794 (yield-expression)

State 542

795 yield-expression"co_yield" braced-init-list $default reduce using rule 795 (yield-expression)

State 543

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 224 | SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 794 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 795 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 544

477 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 483 new-placement "(" expression-list ")" 484 new-placement-opt %empty [IDENTIFIER, "::", "typename", "(", "class", "struct", "union", "const", "volatile", "decltype", "enum", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void"] 485 | new-placement "(" shift, and go to state 796 "(" [reduce using rule 484 (new-placement-opt)] $default reduce using rule 484 (new-placement-opt) new-placement go to state 797 new-placement-opt go to state 798

State 545

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 42 additive-expressionadditive-expression "+" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 799 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 546

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 43 additive-expressionadditive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 800 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 547

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 48 and-expressionand-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 801 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 548

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 149 compare-expressioncompare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 shift-expression go to state 802 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 549

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 259 equality-expressionequality-expression "==" relational-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 803 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 550

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 260 equality-expressionequality-expression "!=" relational-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 804 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 551

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 265 exclusive-or-expressionexclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 805 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 552

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 280 expressionexpression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 806 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 553

216 decltype-specifier"decltype" "(" expression ")" $default reduce using rule 216 (decltype-specifier)

State 554

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 348 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 807 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 555

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 389 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 558 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 559 | parameter-declaration-list "," "..." 560 parameter-declaration-list parameter-declaration 561 | parameter-declaration-list "," parameter-declaration 562 parameter-declaration-list-opt %empty ["...", ")"] 563 | parameter-declaration-list "..." reduce using rule 562 (parameter-declaration-list-opt) ")" reduce using rule 562 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 639 parameter-declaration-clause go to state 808 parameter-declaration-list go to state 641 parameter-declaration-list-opt go to state 642

State 556

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 391 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 656 simple-template-id template-name "<" template-argument-list-opt ">" 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 709 template-parameter type-parameter 710 | parameter-declaration 711 template-parameter-list template-parameter 712 | template-parameter-list "," template-parameter 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 725 type-name class-name 726 | enum-name 727 | typedef-name 728 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 729 | type-parameter-key IDENTIFIER-opt "=" type-id 730 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 731 | type-constraint IDENTIFIER-opt "=" type-id 732 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 733 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 734 type-parameter-key "class" 735 | "typename" 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 224 template-parameter-list go to state 809 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 557

194 decl-specifier-seq-optdecl-specifier-seq $default reduce using rule 194 (decl-specifier-seq-opt)

State 558

393 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 489 noexcept-specifier "noexcept" "(" constant-expression ")" 490 | "noexcept" 491 noexcept-specifier-opt %empty ["alignas", "[", "{", "->", "requires"] 492 | noexcept-specifier "noexcept" shift, and go to state 810 $default reduce using rule 491 (noexcept-specifier-opt) noexcept-specifier go to state 811 noexcept-specifier-opt go to state 812

State 559

151 compound-statement "{" statement-seq-opt "}" 390 lambda-expressionlambda-introducer lambda-declarator compound-statement "{" shift, and go to state 813 compound-statement go to state 814

State 560

388 lambda-declaratorlambda-specifiers $default reduce using rule 388 (lambda-declarator)

State 561

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 695 template-argument constant-expression 696 | type-id 697 | id-expression 698 template-argument-list template-argument ELLIPSIS-opt 699 | template-argument-list "," template-argument ELLIPSIS-opt 700 template-argument-list-opt %empty [">"] 701 | template-argument-list 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] ">" reduce using rule 700 (template-argument-list-opt) "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 425 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 426 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-argument go to state 428 template-argument-list go to state 429 template-argument-list-opt go to state 815 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 431 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 562

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 406 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 816 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 563

56 assignment-operator"=" $default reduce using rule 56 (assignment-operator)

State 564

57 assignment-operator"*=" $default reduce using rule 57 (assignment-operator)

State 565

58 assignment-operator"/=" $default reduce using rule 58 (assignment-operator)

State 566

59 assignment-operator"%=" $default reduce using rule 59 (assignment-operator)

State 567

60 assignment-operator"+=" $default reduce using rule 60 (assignment-operator)

State 568

61 assignment-operator"-=" $default reduce using rule 61 (assignment-operator)

State 569

62 assignment-operator">>=" $default reduce using rule 62 (assignment-operator)

State 570

63 assignment-operator"<<=" $default reduce using rule 63 (assignment-operator)

State 571

64 assignment-operator"&=" $default reduce using rule 64 (assignment-operator)

State 572

65 assignment-operator"^=" $default reduce using rule 65 (assignment-operator)

State 573

66 assignment-operator"|=" $default reduce using rule 66 (assignment-operator)

State 574

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 817 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 575

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 408 logical-or-expressionlogical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 818 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 576

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 819 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 577

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 451 multiplicative-expressionmultiplicative-expression "*" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 820 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 578

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 452 multiplicative-expressionmultiplicative-expression "/" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 821 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 579

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 453 multiplicative-expressionmultiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 822 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 580

171 conversion-function-id "operator" conversion-type-id 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 612 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 656 simple-template-id template-name "<" template-argument-list-opt ">" 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id IDENTIFIER shift, and go to state 823 "operator" shift, and go to state 251 "~" shift, and go to state 354 conversion-function-id go to state 282 literal-operator-id go to state 295 operator-function-id go to state 302 simple-template-id go to state 824 template-id go to state 314 template-name go to state 102 unqualified-id go to state 825

State 581

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 695 template-argument constant-expression 696 | type-id 697 | id-expression 698 template-argument-list template-argument ELLIPSIS-opt 699 | template-argument-list "," template-argument ELLIPSIS-opt 700 template-argument-list-opt %empty [">"] 701 | template-argument-list 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] ">" reduce using rule 700 (template-argument-list-opt) "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 425 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 426 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-argument go to state 428 template-argument-list go to state 429 template-argument-list-opt go to state 826 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 431 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 582

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 568 pm-expressionpm-expression ".*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 827 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 583

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 569 pm-expressionpm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 828 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 584

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 282 expression-list-opt %empty [")"] 283 | expression-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 829 expression-list-opt go to state 830 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 585

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 282 expression-list-opt %empty ["]"] 283 | expression-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "]" reduce using rule 282 (expression-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 829 expression-list-opt go to state 831 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 586

21 TEMPLATE-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 22 | "template" 579 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression "template" shift, and go to state 230 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 832

State 587

21 TEMPLATE-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 22 | "template" 578 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression "template" shift, and go to state 230 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 833

State 588

580 postfix-expressionpostfix-expression "++" $default reduce using rule 580 (postfix-expression)

State 589

581 postfix-expressionpostfix-expression "--" $default reduce using rule 581 (postfix-expression)

State 590

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 619 relational-expressionrelational-expression "<" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 834 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 591

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 620 relational-expressionrelational-expression ">" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 835 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 592

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 621 relational-expressionrelational-expression "<=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 836 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 593

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 622 relational-expressionrelational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 837 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 594

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 646 shift-expressionshift-expression "<<" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 838 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 595

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 647 shift-expressionshift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 839 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 596

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 282 expression-list-opt %empty [")"] 283 | expression-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 829 expression-list-opt go to state 840 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 597

576 postfix-expressionsimple-type-specifier braced-init-list $default reduce using rule 576 (postfix-expression)

State 598

747 ud-suffixIDENTIFIER $default reduce using rule 747 (ud-suffix)

State 599

781 user-defined-string-literalstring-literal ud-suffix $default reduce using rule 781 (user-defined-string-literal)

State 600

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 282 expression-list-opt %empty [")"] 283 | expression-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 829 expression-list-opt go to state 841 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 601

577 postfix-expressiontypename-specifier braced-init-list $default reduce using rule 577 (postfix-expression)

State 602

749 unary-expressionunary-operator cast-expression $default reduce using rule 749 (unary-expression)

State 603

268 explicit-specifier"explicit" "(" constant-expression ")" $default reduce using rule 268 (explicit-specifier)

State 604

447 module-partition":" module-name-qualifier-opt IDENTIFIER $default reduce using rule 447 (module-partition)

State 605

441 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" $default reduce using rule 441 (module-import-declaration)

State 606

439 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" $default reduce using rule 439 (module-import-declaration)

State 607

444 module-name-qualifiermodule-name-qualifier IDENTIFIER "." $default reduce using rule 444 (module-name-qualifier)

State 608

440 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" $default reduce using rule 440 (module-import-declaration)

State 609

455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 613 qualified-namespace-specifiernested-name-specifier-opt namespace-name IDENTIFIER shift, and go to state 842 namespace-alias go to state 85 namespace-name go to state 843

State 610

456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" ";" shift, and go to state 844

State 611

14 INLINE-opt"inline" $default reduce using rule 14 (INLINE-opt)

State 612

237 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" IDENTIFIER shift, and go to state 845

State 613

689 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" 694 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 118 string-literal go to state 846

State 614

688 static_assert-declaration"static_assert" "(" constant-expression ")" ";" ";" shift, and go to state 847

State 615

454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" "{" shift, and go to state 848

State 616

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty ["}"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 457 namespace-body declaration-seq-opt 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 766 | INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 210 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 849 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 850 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 617

653 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" $default reduce using rule 653 (simple-declaration)

State 618

244 enum-head-name-optenum-head-name $default reduce using rule 244 (enum-head-name-opt)

State 619

455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" IDENTIFIER shift, and go to state 842 namespace-alias go to state 85 namespace-name go to state 851

State 620

5 ELLIPSIS-opt %empty [")"] 6 | "..." 46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 852

State 621

5 ELLIPSIS-opt %empty [")"] 6 | "..." 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 853

State 622

502 noptr-declaratornoptr-declarator parameters-and-qualifiers $default reduce using rule 502 (noptr-declarator)

State 623

504 noptr-declarator"(" ptr-declarator ")" $default reduce using rule 504 (noptr-declarator)

State 624

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" ")" shift, and go to state 854

State 625

76 attribute-namespace IDENTIFIER 87 attribute-using-prefix"using" attribute-namespace ":" IDENTIFIER shift, and go to state 855 attribute-namespace go to state 856

State 626

89 attribute-using-prefix-optattribute-using-prefix $default reduce using rule 89 (attribute-using-prefix-opt)

State 627

67 attribute attribute-token attribute-argument-clause-opt 72 attribute-list attribute-opt 73 | attribute-list "," attribute-opt 74 | attribute "..." 75 | attribute-list "," attribute "..." 76 attribute-namespace IDENTIFIER 77 attribute-opt %empty [",", "]"] 78 | attribute 79 attribute-scoped-token attribute-namespace "::" IDENTIFIER 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 85 attribute-token IDENTIFIER 86 | attribute-scoped-token IDENTIFIER shift, and go to state 857 $default reduce using rule 77 (attribute-opt) attribute go to state 858 attribute-list go to state 859 attribute-namespace go to state 860 attribute-opt go to state 861 attribute-scoped-token go to state 862 attribute-token go to state 863

State 628

177 cv-qualifier "const" 178 | "volatile" 179 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 179 | cv-qualifier cv-qualifier-seq-opt 180 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 181 | cv-qualifier-seq "const" shift, and go to state 15 "volatile" shift, and go to state 16 "const" [reduce using rule 180 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 180 (cv-qualifier-seq-opt)] $default reduce using rule 180 (cv-qualifier-seq-opt) cv-qualifier go to state 628 cv-qualifier-seq go to state 629 cv-qualifier-seq-opt go to state 864

State 629

181 cv-qualifier-seq-optcv-qualifier-seq $default reduce using rule 181 (cv-qualifier-seq-opt)

State 630

605 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 605 (ptr-operator)

State 631

345 identifier-list IDENTIFIER 346 | identifier-list "," IDENTIFIER 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" IDENTIFIER shift, and go to state 865 identifier-list go to state 866

State 632

789 virt-specifier"final" $default reduce using rule 789 (virt-specifier)

State 633

788 virt-specifier"override" $default reduce using rule 788 (virt-specifier)

State 634

174 ctor-initializer ":" mem-initializer-list 175 ctor-initializer-opt %empty ["{"] 176 | ctor-initializer 326 function-body ctor-initializer-opt compound-statement 327 | function-try-block 328 | "=" "default" ";" 329 | "=" "delete" ";" 331 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 334 function-try-block "try" ctor-initializer-opt compound-statement handler-seq "=" shift, and go to state 867 ":" shift, and go to state 868 "try" shift, and go to state 869 $default reduce using rule 175 (ctor-initializer-opt) ctor-initializer go to state 870 ctor-initializer-opt go to state 871 function-body go to state 872 function-try-block go to state 873

State 635

790 virt-specifier-seqvirt-specifier $default reduce using rule 790 (virt-specifier-seq)

State 636

788 virt-specifier "override" 789 | "final" 791 virt-specifier-seqvirt-specifier-seq virt-specifier 793 virt-specifier-seq-optvirt-specifier-seq [",", "=", ";", ":", "{", "try"] "final" shift, and go to state 632 "override" shift, and go to state 633 $default reduce using rule 793 (virt-specifier-seq-opt) virt-specifier go to state 874

State 637

174 ctor-initializer ":" mem-initializer-list 175 ctor-initializer-opt %empty ["{"] 176 | ctor-initializer 326 function-body ctor-initializer-opt compound-statement 327 | function-try-block 328 | "=" "default" ";" 329 | "=" "delete" ";" 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 334 function-try-block "try" ctor-initializer-opt compound-statement handler-seq "=" shift, and go to state 867 ":" shift, and go to state 868 "try" shift, and go to state 869 $default reduce using rule 175 (ctor-initializer-opt) ctor-initializer go to state 870 ctor-initializer-opt go to state 871 function-body go to state 875 function-try-block go to state 873

State 638

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 177 cv-qualifier "const" 178 | "volatile" 179 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 180 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 181 | cv-qualifier-seq 608 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt "alignas" shift, and go to state 158 "[" shift, and go to state 162 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "alignas" [reduce using rule 180 (cv-qualifier-seq-opt)] "[" [reduce using rule 180 (cv-qualifier-seq-opt)] "const" [reduce using rule 180 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 180 (cv-qualifier-seq-opt)] $default reduce using rule 180 (cv-qualifier-seq-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 cv-qualifier go to state 628 cv-qualifier-seq go to state 629 cv-qualifier-seq-opt go to state 876

State 639

560 parameter-declaration-listparameter-declaration $default reduce using rule 560 (parameter-declaration-list)

State 640

564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt ")" shift, and go to state 877

State 641

559 parameter-declaration-clauseparameter-declaration-list "," "..." 561 parameter-declaration-listparameter-declaration-list "," parameter-declaration 563 parameter-declaration-list-optparameter-declaration-list ["...", ")"] "," shift, and go to state 878 $default reduce using rule 563 (parameter-declaration-list-opt)

State 642

5 ELLIPSIS-opt %empty [")"] 6 | "..." 558 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 879

State 643

162 constant-expression-optconstant-expression $default reduce using rule 162 (constant-expression-opt)

State 644

503 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 880

State 645

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 714 trailing-return-type"->" type-id 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 881 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 646

214 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type $default reduce using rule 214 (declarator)

State 647

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 235 empty-declaration ";" 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 415 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 416 | function-definition 417 | using-declaration 418 | using-enum-declaration 419 | static_assert-declaration 420 | template-declaration 421 | explicit-specialization 422 | deduction-guide 423 | alias-declaration 424 | opaque-enum-declaration 425 | empty-declaration 434 member-specification member-declaration member-specification-opt 435 | access-specifier ":" member-specification-opt 435 | access-specifier ":" member-specification-opt 436 member-specification-opt %empty ["}"] 437 | member-specification 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 782 using-declaration "using" using-declarator-list ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 369 "protected" shift, and go to state 370 "public" shift, and go to state 371 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 372 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 436 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 373 alias-declaration go to state 374 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 375 deduction-guide go to state 376 empty-declaration go to state 377 enum-key go to state 378 explicit-specialization go to state 379 explicit-specifier go to state 380 explicit-specifier-opt go to state 76 function-definition go to state 381 member-declaration go to state 382 member-specification go to state 383 member-specification-opt go to state 882 opaque-enum-declaration go to state 385 static_assert-declaration go to state 386 template-declaration go to state 387 template-head go to state 101 using-declaration go to state 388 using-enum-declaration go to state 389

State 648

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 11 IDENTIFIER-opt %empty ["alignas", "[", ":"] 12 | IDENTIFIER 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 415 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 426 member-declarator declarator virt-specifier-seq-opt pure-specifier-opt 427 | declarator requires-clause 428 | declarator brace-or-equal-initializer-opt 429 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 430 member-declarator-list member-declarator 431 | member-declarator-list "," member-declarator 432 member-declarator-list-opt %empty [";"] 433 | member-declarator-list 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 883 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] ";" reduce using rule 432 (member-declarator-list-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 165 IDENTIFIER-opt go to state 884 class-name go to state 55 declarator go to state 885 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 member-declarator go to state 886 member-declarator-list go to state 887 member-declarator-list-opt go to state 888 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 649

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 242 enum-head-name nested-name-specifier-opt IDENTIFIER 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-head-name go to state 889 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 414 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 650

434 member-specificationmember-declaration member-specification-opt $default reduce using rule 434 (member-specification)

State 651

144 class-specifierclass-head "{" member-specification-opt "}" $default reduce using rule 144 (class-specifier)

State 652

36 access-specifier "private" 37 | "protected" 38 | "public" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 102 base-specifierattribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 139 class-name IDENTIFIER 140 | simple-template-id 141 class-or-decltype nested-name-specifier-opt type-name 142 | nested-name-specifier "template" simple-template-id 143 | decltype-specifier 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "virtual" shift, and go to state 890 "private" shift, and go to state 369 "protected" shift, and go to state 370 "public" shift, and go to state 371 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] access-specifier go to state 891 alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 class-or-decltype go to state 892 decltype-specifier go to state 893 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 894 nested-name-specifier-opt go to state 895 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 653

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 105 base-specifier-listbase-specifier ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 896

State 654

99 base-clause":" base-specifier-list ["{"] 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt "," shift, and go to state 897 $default reduce using rule 99 (base-clause)

State 655

145 class-virt-specifier"final" $default reduce using rule 145 (class-virt-specifier)

State 656

147 class-virt-specifier-optclass-virt-specifier $default reduce using rule 147 (class-virt-specifier-opt)

State 657

99 base-clause ":" base-specifier-list 100 base-clause-opt %empty ["{"] 101 | base-clause 133 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt ":" shift, and go to state 390 $default reduce using rule 100 (base-clause-opt) base-clause go to state 391 base-clause-opt go to state 898

State 658

139 class-nameIDENTIFIER [":", "{", "final"] 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", ">", "explicit", "*", "requires", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 708 template-nameIDENTIFIER ["<"] ":" reduce using rule 139 (class-name) ":" [reduce using rule 231 (elaborated-type-specifier)] "{" reduce using rule 139 (class-name) "{" [reduce using rule 231 (elaborated-type-specifier)] "final" reduce using rule 139 (class-name) "<" reduce using rule 708 (template-name) $default reduce using rule 231 (elaborated-type-specifier)

State 659

135 class-head-namenested-name-specifier-opt class-name $default reduce using rule 135 (class-head-name)

State 660

140 class-namesimple-template-id $default reduce using rule 140 (class-name)

State 661

233 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" "::" shift, and go to state 693 "::" [reduce using rule 233 (elaborated-type-specifier)] $default reduce using rule 233 (elaborated-type-specifier)

State 662

364 initializer-clauseassignment-expression $default reduce using rule 364 (initializer-clause)

State 663

365 initializer-clausebraced-init-list $default reduce using rule 365 (initializer-clause)

State 664

117 brace-or-equal-initializer"=" initializer-clause $default reduce using rule 117 (brace-or-equal-initializer)

State 665

363 initializer"(" expression-list ")" ")" shift, and go to state 899

State 666

5 ELLIPSIS-opt %empty [",", ")", "]", "}"] 6 | "..." 366 initializer-listinitializer-clause ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 900

State 667

281 expression-listinitializer-list [")", "]"] 367 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "," shift, and go to state 901 $default reduce using rule 281 (expression-list)

State 668

123 braced-init-list"{" "}" $default reduce using rule 123 (braced-init-list)

State 669

229 designator"." IDENTIFIER IDENTIFIER shift, and go to state 902

State 670

227 designated-initializer-listdesignated-initializer-clause $default reduce using rule 227 (designated-initializer-list)

State 671

1 COMMA-opt %empty ["}"] 2 | "," 122 braced-init-list"{" designated-initializer-list COMMA-opt "}" 228 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause "," shift, and go to state 903 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 904

State 672

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 226 designated-initializer-clausedesignator brace-or-equal-initializer "=" shift, and go to state 396 "{" shift, and go to state 398 brace-or-equal-initializer go to state 905 braced-init-list go to state 401

State 673

1 COMMA-opt %empty ["}"] 2 | "," 121 braced-init-list"{" initializer-list COMMA-opt "}" 367 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "," shift, and go to state 906 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 907

State 674

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 288 | "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "..." shift, and go to state 457 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 458 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 459 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 675

165 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 166 constraint-logical-or-expressionconstraint-logical-and-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "&&" shift, and go to state 908 "&&" [reduce using rule 166 (constraint-logical-or-expression)] $default reduce using rule 166 (constraint-logical-or-expression)

State 676

167 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression 633 requires-clause"requires" constraint-logical-or-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "||" shift, and go to state 909 $default reduce using rule 633 (requires-clause)

State 677

164 constraint-logical-and-expressionprimary-expression $default reduce using rule 164 (constraint-logical-and-expression)

State 678

354 init-declarator-listinit-declarator-list "," init-declarator $default reduce using rule 354 (init-declarator-list)

State 679

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 251 enumeratorIDENTIFIER attribute-specifier-seq-opt [",", "=", "}"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 $default reduce using rule 251 (enumerator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 680

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 253 enumerator-definitionenumerator "=" constant-expression 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 910 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 681

250 enum-specifierenum-head "{" enumerator-list "," "}" 251 enumerator IDENTIFIER attribute-specifier-seq-opt 252 enumerator-definition enumerator 253 | enumerator "=" constant-expression 255 enumerator-listenumerator-list "," enumerator-definition IDENTIFIER shift, and go to state 407 "}" shift, and go to state 911 enumerator go to state 408 enumerator-definition go to state 912

State 682

249 enum-specifierenum-head "{" enumerator-list-opt "}" $default reduce using rule 249 (enum-specifier)

State 683

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 238 enum-base":" type-specifier-seq 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 913 typedef-name go to state 108 typename-specifier go to state 109

State 684

240 enum-base-optenum-base $default reduce using rule 240 (enum-base-opt)

State 685

507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ";" shift, and go to state 914

State 686

241 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 241 (enum-head)

State 687

242 enum-head-namenested-name-specifier-opt IDENTIFIER $default reduce using rule 242 (enum-head-name)

State 688

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" ")" shift, and go to state 915

State 689

438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 447 module-partition ":" module-name-qualifier-opt IDENTIFIER 448 module-partition-opt %empty [";", "alignas", "["] 449 | module-partition ":" shift, and go to state 138 $default reduce using rule 448 (module-partition-opt) module-partition go to state 916 module-partition-opt go to state 917

State 690

596 private-module-fragment"module" ":" "private" ";" declaration-seq-opt ":" shift, and go to state 918

State 691

598 private-module-fragment-optprivate-module-fragment $default reduce using rule 598 (private-module-fragment-opt)

State 692

718 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt $default reduce using rule 718 (translation-unit)

State 693

468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" $default reduce using rule 468 (nested-name-specifier)

State 694

721 type-constraintnested-name-specifier-opt concept-name "<" template-argument-list-opt ">" ">" shift, and go to state 919

State 695

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 152 concept-definition"concept" concept-name "=" constraint-expression ";" 163 constraint-expression logical-or-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 constraint-expression go to state 920 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 921 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 696

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 922 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 697

698 template-argument-listtemplate-argument ELLIPSIS-opt $default reduce using rule 698 (template-argument-list)

State 698

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 695 template-argument constant-expression 696 | type-id 697 | id-expression 699 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 425 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 426 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-argument go to state 923 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 431 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 699

656 simple-template-idtemplate-name "<" template-argument-list-opt ">" $default reduce using rule 656 (simple-template-id)

State 700

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 741 type-specifier-seqtype-specifier attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 741 (type-specifier-seq)] "[" [reduce using rule 741 (type-specifier-seq)] $default reduce using rule 741 (type-specifier-seq) alignment-specifier go to state 166 attribute-specifier go to state 167

State 701

742 type-specifier-seqtype-specifier type-specifier-seq $default reduce using rule 742 (type-specifier-seq)

State 702

500 noptr-abstract-pack-declarator"..." $default reduce using rule 500 (noptr-abstract-pack-declarator)

State 703

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 703 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] $default reduce using rule 496 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 924 ptr-abstract-declarator go to state 925 ptr-operator go to state 926 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 704

33 abstract-declarator-optabstract-declarator $default reduce using rule 33 (abstract-declarator-opt)

State 705

724 type-idtype-specifier-seq abstract-declarator-opt $default reduce using rule 724 (type-id)

State 706

31 abstract-declaratorabstract-pack-declarator $default reduce using rule 31 (abstract-declarator)

State 707

497 noptr-abstract-declarator-optnoptr-abstract-declarator ["(", "["] 599 ptr-abstract-declaratornoptr-abstract-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" reduce using rule 497 (noptr-abstract-declarator-opt) "(" [reduce using rule 599 (ptr-abstract-declarator)] "[" reduce using rule 497 (noptr-abstract-declarator-opt) $default reduce using rule 599 (ptr-abstract-declarator)

State 708

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 493 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 564 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 365 "[" shift, and go to state 927 parameters-and-qualifiers go to state 928

State 709

34 abstract-pack-declaratornoptr-abstract-pack-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 498 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 564 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 365 "[" shift, and go to state 929 "(" [reduce using rule 34 (abstract-pack-declarator)] $default reduce using rule 34 (abstract-pack-declarator) parameters-and-qualifiers go to state 930

State 710

29 abstract-declaratorptr-abstract-declarator $default reduce using rule 29 (abstract-declarator)

State 711

34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 600 | ptr-operator ptr-abstract-declarator-opt 601 ptr-abstract-declarator-opt %empty [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 602 | ptr-abstract-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 702 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 703 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 601 (ptr-abstract-declarator-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] "(" [reduce using rule 601 (ptr-abstract-declarator-opt)] "[" reduce using rule 496 (noptr-abstract-declarator-opt) $default reduce using rule 601 (ptr-abstract-declarator-opt) abstract-pack-declarator go to state 931 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 924 noptr-abstract-pack-declarator go to state 709 ptr-abstract-declarator go to state 932 ptr-abstract-declarator-opt go to state 933 ptr-operator go to state 711 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 712

566 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" ")" shift, and go to state 934

State 713

394 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" $default reduce using rule 394 (linkage-specification)

State 714

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [",", "...", "=", ")", ">"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 554 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 935 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 936 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 32 (abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] "[" reduce using rule 496 (noptr-abstract-declarator-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 32 (abstract-declarator-opt) ELLIPSIS-opt go to state 165 abstract-declarator go to state 704 abstract-declarator-opt go to state 937 abstract-pack-declarator go to state 706 class-name go to state 55 declarator go to state 938 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 708 noptr-abstract-pack-declarator go to state 709 noptr-declarator go to state 173 ptr-abstract-declarator go to state 710 ptr-declarator go to state 174 ptr-operator go to state 939 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 715

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 732 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 445 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 940

State 716

733 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression "=" shift, and go to state 941

State 717

712 template-parameter-listtemplate-parameter-list "," template-parameter $default reduce using rule 712 (template-parameter-list)

State 718

635 requires-clause-optrequires-clause $default reduce using rule 635 (requires-clause-opt)

State 719

704 template-head"template" "<" template-parameter-list ">" requires-clause-opt $default reduce using rule 704 (template-head)

State 720

730 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 730 (type-parameter)

State 721

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 731 type-parametertype-constraint IDENTIFIER-opt "=" type-id 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 942 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 722

728 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 728 (type-parameter)

State 723

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 729 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 943 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 724

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" ";" shift, and go to state 944

State 725

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", ";", "alignas", "(", "&", "[", "&&", "decltype", "*"] 84 | attribute-specifier-seq 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 222 defining-type-specifier-seq defining-type-specifier attribute-specifier-seq-opt 222 | defining-type-specifier attribute-specifier-seq-opt 223 | defining-type-specifier defining-type-specifier-seq 223 | defining-type-specifier defining-type-specifier-seq 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 945 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-specifier go to state 725 defining-type-specifier-seq go to state 946 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 726

29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [";"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 218 defining-type-iddefining-type-specifier-seq abstract-declarator-opt 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 702 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 703 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] "[" reduce using rule 496 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 704 abstract-declarator-opt go to state 947 abstract-pack-declarator go to state 706 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 708 noptr-abstract-pack-declarator go to state 709 ptr-abstract-declarator go to state 710 ptr-operator go to state 711 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 727

785 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt $default reduce using rule 785 (using-declarator-list)

State 728

280 expressionexpression "," assignment-expression 488 noexcept-expression"noexcept" "(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 948

State 729

320 fold-operator"," $default reduce using rule 320 (fold-operator)

State 730

291 fold-operator"+" $default reduce using rule 291 (fold-operator)

State 731

292 fold-operator"-" $default reduce using rule 292 (fold-operator)

State 732

311 fold-operator"=" $default reduce using rule 311 (fold-operator)

State 733

297 fold-operator"&" $default reduce using rule 297 (fold-operator)

State 734

303 fold-operator"*=" $default reduce using rule 303 (fold-operator)

State 735

304 fold-operator"/=" $default reduce using rule 304 (fold-operator)

State 736

305 fold-operator"%=" $default reduce using rule 305 (fold-operator)

State 737

301 fold-operator"+=" $default reduce using rule 301 (fold-operator)

State 738

302 fold-operator"-=" $default reduce using rule 302 (fold-operator)

State 739

310 fold-operator">>=" $default reduce using rule 310 (fold-operator)

State 740

309 fold-operator"<<=" $default reduce using rule 309 (fold-operator)

State 741

307 fold-operator"&=" $default reduce using rule 307 (fold-operator)

State 742

306 fold-operator"^=" $default reduce using rule 306 (fold-operator)

State 743

308 fold-operator"|=" $default reduce using rule 308 (fold-operator)

State 744

318 fold-operator"&&" $default reduce using rule 318 (fold-operator)

State 745

319 fold-operator"||" $default reduce using rule 319 (fold-operator)

State 746

312 fold-operator"==" $default reduce using rule 312 (fold-operator)

State 747

313 fold-operator"!=" $default reduce using rule 313 (fold-operator)

State 748

296 fold-operator"^" $default reduce using rule 296 (fold-operator)

State 749

314 fold-operator"<" $default reduce using rule 314 (fold-operator)

State 750

315 fold-operator">" $default reduce using rule 315 (fold-operator)

State 751

293 fold-operator"*" $default reduce using rule 293 (fold-operator)

State 752

294 fold-operator"/" $default reduce using rule 294 (fold-operator)

State 753

295 fold-operator"%" $default reduce using rule 295 (fold-operator)

State 754

298 fold-operator"|" $default reduce using rule 298 (fold-operator)

State 755

299 fold-operator"<<" $default reduce using rule 299 (fold-operator)

State 756

300 fold-operator">>" $default reduce using rule 300 (fold-operator)

State 757

316 fold-operator"<=" $default reduce using rule 316 (fold-operator)

State 758

317 fold-operator">=" $default reduce using rule 317 (fold-operator)

State 759

321 fold-operator".*" $default reduce using rule 321 (fold-operator)

State 760

322 fold-operator"->*" $default reduce using rule 322 (fold-operator)

State 761

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 949 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 762

288 fold-expression"(" cast-expression fold-operator "..." ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" "..." shift, and go to state 950

State 763

591 primary-expression"(" expression ")" $default reduce using rule 591 (primary-expression)

State 764

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 951 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 765

648 simple-captureIDENTIFIER ELLIPSIS-opt $default reduce using rule 648 (simple-capture)

State 766

5 ELLIPSIS-opt %empty [",", "]"] 6 | "..." 649 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 952

State 767

350 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer IDENTIFIER shift, and go to state 953

State 768

651 simple-capture"*" "this" $default reduce using rule 651 (simple-capture)

State 769

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 349 init-captureELLIPSIS-opt IDENTIFIER initializer 362 initializer brace-or-equal-initializer 363 | "(" expression-list ")" "=" shift, and go to state 396 "(" shift, and go to state 397 "{" shift, and go to state 398 brace-or-equal-initializer go to state 400 braced-init-list go to state 401 initializer go to state 954

State 770

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 124 capture simple-capture 125 | init-capture 128 capture-list capture 129 | capture-list "," capture 349 init-capture ELLIPSIS-opt IDENTIFIER initializer 350 | "&" ELLIPSIS-opt IDENTIFIER initializer 385 lambda-capturecapture-default "," capture-list 648 simple-capture IDENTIFIER ELLIPSIS-opt 649 | "&" IDENTIFIER ELLIPSIS-opt 650 | "this" 651 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 461 "this" shift, and go to state 462 "&" shift, and go to state 955 "*" shift, and go to state 465 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 466 capture go to state 467 capture-list go to state 956 init-capture go to state 470 simple-capture go to state 473

State 771

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 124 capture simple-capture 125 | init-capture 129 capture-listcapture-list "," capture 349 init-capture ELLIPSIS-opt IDENTIFIER initializer 350 | "&" ELLIPSIS-opt IDENTIFIER initializer 648 simple-capture IDENTIFIER ELLIPSIS-opt 649 | "&" IDENTIFIER ELLIPSIS-opt 650 | "this" 651 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 461 "this" shift, and go to state 462 "&" shift, and go to state 955 "*" shift, and go to state 465 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 466 capture go to state 957 init-capture go to state 470 simple-capture go to state 473

State 772

392 lambda-introducer"[" lambda-capture-opt "]" $default reduce using rule 392 (lambda-introducer)

State 773

515 overloadable-operator"(" ")" $default reduce using rule 515 (overloadable-operator)

State 774

516 overloadable-operator"[" "]" $default reduce using rule 516 (overloadable-operator)

State 775

513 overloadable-operator"delete" "[" "]" "]" shift, and go to state 958

State 776

512 overloadable-operator"new" "[" "]" "]" shift, and go to state 959

State 777

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 695 template-argument constant-expression 696 | type-id 697 | id-expression 698 template-argument-list template-argument ELLIPSIS-opt 699 | template-argument-list "," template-argument ELLIPSIS-opt 700 template-argument-list-opt %empty [">"] 701 | template-argument-list 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] ">" reduce using rule 700 (template-argument-list-opt) "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 425 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 426 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-argument go to state 428 template-argument-list go to state 429 template-argument-list-opt go to state 960 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 431 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 778

403 literal-operator-id"operator" string-literal IDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 747 ud-suffixIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 403 (literal-operator-id) "," [reduce using rule 747 (ud-suffix)] "constexpr" reduce using rule 403 (literal-operator-id) "constexpr" [reduce using rule 747 (ud-suffix)] "..." reduce using rule 403 (literal-operator-id) "..." [reduce using rule 747 (ud-suffix)] "export" reduce using rule 403 (literal-operator-id) "export" [reduce using rule 747 (ud-suffix)] "extern" reduce using rule 403 (literal-operator-id) "extern" [reduce using rule 747 (ud-suffix)] IDENTIFIER reduce using rule 403 (literal-operator-id) IDENTIFIER [reduce using rule 747 (ud-suffix)] "inline" reduce using rule 403 (literal-operator-id) "inline" [reduce using rule 747 (ud-suffix)] "noexcept" reduce using rule 403 (literal-operator-id) "noexcept" [reduce using rule 747 (ud-suffix)] "::" reduce using rule 403 (literal-operator-id) "::" [reduce using rule 747 (ud-suffix)] "template" reduce using rule 403 (literal-operator-id) "template" [reduce using rule 747 (ud-suffix)] "typename" reduce using rule 403 (literal-operator-id) "typename" [reduce using rule 747 (ud-suffix)] "virtual" reduce using rule 403 (literal-operator-id) "virtual" [reduce using rule 747 (ud-suffix)] "+" reduce using rule 403 (literal-operator-id) "+" [reduce using rule 747 (ud-suffix)] "-" reduce using rule 403 (literal-operator-id) "-" [reduce using rule 747 (ud-suffix)] "using" reduce using rule 403 (literal-operator-id) "using" [reduce using rule 747 (ud-suffix)] "=" reduce using rule 403 (literal-operator-id) "=" [reduce using rule 747 (ud-suffix)] ";" reduce using rule 403 (literal-operator-id) ";" [reduce using rule 747 (ud-suffix)] "alignas" reduce using rule 403 (literal-operator-id) "alignas" [reduce using rule 747 (ud-suffix)] "(" reduce using rule 403 (literal-operator-id) "(" [reduce using rule 747 (ud-suffix)] ")" reduce using rule 403 (literal-operator-id) ")" [reduce using rule 747 (ud-suffix)] "&" reduce using rule 403 (literal-operator-id) "&" [reduce using rule 747 (ud-suffix)] "asm" reduce using rule 403 (literal-operator-id) "asm" [reduce using rule 747 (ud-suffix)] "*=" reduce using rule 403 (literal-operator-id) "*=" [reduce using rule 747 (ud-suffix)] "/=" reduce using rule 403 (literal-operator-id) "/=" [reduce using rule 747 (ud-suffix)] "%=" reduce using rule 403 (literal-operator-id) "%=" [reduce using rule 747 (ud-suffix)] "+=" reduce using rule 403 (literal-operator-id) "+=" [reduce using rule 747 (ud-suffix)] "-=" reduce using rule 403 (literal-operator-id) "-=" [reduce using rule 747 (ud-suffix)] ">>=" reduce using rule 403 (literal-operator-id) ">>=" [reduce using rule 747 (ud-suffix)] "<<=" reduce using rule 403 (literal-operator-id) "<<=" [reduce using rule 747 (ud-suffix)] "&=" reduce using rule 403 (literal-operator-id) "&=" [reduce using rule 747 (ud-suffix)] "^=" reduce using rule 403 (literal-operator-id) "^=" [reduce using rule 747 (ud-suffix)] "|=" reduce using rule 403 (literal-operator-id) "|=" [reduce using rule 747 (ud-suffix)] "[" reduce using rule 403 (literal-operator-id) "[" [reduce using rule 747 (ud-suffix)] "]" reduce using rule 403 (literal-operator-id) "]" [reduce using rule 747 (ud-suffix)] ":" reduce using rule 403 (literal-operator-id) ":" [reduce using rule 747 (ud-suffix)] "{" reduce using rule 403 (literal-operator-id) "{" [reduce using rule 747 (ud-suffix)] "}" reduce using rule 403 (literal-operator-id) "}" [reduce using rule 747 (ud-suffix)] "class" reduce using rule 403 (literal-operator-id) "class" [reduce using rule 747 (ud-suffix)] "struct" reduce using rule 403 (literal-operator-id) "struct" [reduce using rule 747 (ud-suffix)] "union" reduce using rule 403 (literal-operator-id) "union" [reduce using rule 747 (ud-suffix)] "final" reduce using rule 403 (literal-operator-id) "final" [reduce using rule 747 (ud-suffix)] "<=>" reduce using rule 403 (literal-operator-id) "<=>" [reduce using rule 747 (ud-suffix)] "concept" reduce using rule 403 (literal-operator-id) "concept" [reduce using rule 747 (ud-suffix)] "?" reduce using rule 403 (literal-operator-id) "?" [reduce using rule 747 (ud-suffix)] "&&" reduce using rule 403 (literal-operator-id) "&&" [reduce using rule 747 (ud-suffix)] "||" reduce using rule 403 (literal-operator-id) "||" [reduce using rule 747 (ud-suffix)] "operator" reduce using rule 403 (literal-operator-id) "operator" [reduce using rule 747 (ud-suffix)] "const" reduce using rule 403 (literal-operator-id) "const" [reduce using rule 747 (ud-suffix)] "volatile" reduce using rule 403 (literal-operator-id) "volatile" [reduce using rule 747 (ud-suffix)] "friend" reduce using rule 403 (literal-operator-id) "friend" [reduce using rule 747 (ud-suffix)] "typedef" reduce using rule 403 (literal-operator-id) "typedef" [reduce using rule 747 (ud-suffix)] "consteval" reduce using rule 403 (literal-operator-id) "consteval" [reduce using rule 747 (ud-suffix)] "constinit" reduce using rule 403 (literal-operator-id) "constinit" [reduce using rule 747 (ud-suffix)] "decltype" reduce using rule 403 (literal-operator-id) "decltype" [reduce using rule 747 (ud-suffix)] "->" reduce using rule 403 (literal-operator-id) "->" [reduce using rule 747 (ud-suffix)] "." reduce using rule 403 (literal-operator-id) "." [reduce using rule 747 (ud-suffix)] "enum" reduce using rule 403 (literal-operator-id) "enum" [reduce using rule 747 (ud-suffix)] "==" reduce using rule 403 (literal-operator-id) "==" [reduce using rule 747 (ud-suffix)] "!=" reduce using rule 403 (literal-operator-id) "!=" [reduce using rule 747 (ud-suffix)] "^" reduce using rule 403 (literal-operator-id) "^" [reduce using rule 747 (ud-suffix)] "<" reduce using rule 403 (literal-operator-id) "<" [reduce using rule 747 (ud-suffix)] ">" reduce using rule 403 (literal-operator-id) ">" [reduce using rule 747 (ud-suffix)] "explicit" reduce using rule 403 (literal-operator-id) "explicit" [reduce using rule 747 (ud-suffix)] "*" reduce using rule 403 (literal-operator-id) "*" [reduce using rule 747 (ud-suffix)] "/" reduce using rule 403 (literal-operator-id) "/" [reduce using rule 747 (ud-suffix)] "%" reduce using rule 403 (literal-operator-id) "%" [reduce using rule 747 (ud-suffix)] "|" reduce using rule 403 (literal-operator-id) "|" [reduce using rule 747 (ud-suffix)] "<<" reduce using rule 403 (literal-operator-id) "<<" [reduce using rule 747 (ud-suffix)] ">>" reduce using rule 403 (literal-operator-id) ">>" [reduce using rule 747 (ud-suffix)] "<=" reduce using rule 403 (literal-operator-id) "<=" [reduce using rule 747 (ud-suffix)] ">=" reduce using rule 403 (literal-operator-id) ">=" [reduce using rule 747 (ud-suffix)] ".*" reduce using rule 403 (literal-operator-id) ".*" [reduce using rule 747 (ud-suffix)] "->*" reduce using rule 403 (literal-operator-id) "->*" [reduce using rule 747 (ud-suffix)] "try" reduce using rule 403 (literal-operator-id) "try" [reduce using rule 747 (ud-suffix)] "import" reduce using rule 403 (literal-operator-id) "import" [reduce using rule 747 (ud-suffix)] "namespace" reduce using rule 403 (literal-operator-id) "namespace" [reduce using rule 747 (ud-suffix)] "requires" reduce using rule 403 (literal-operator-id) "requires" [reduce using rule 747 (ud-suffix)] "~" reduce using rule 403 (literal-operator-id) "~" [reduce using rule 747 (ud-suffix)] "++" reduce using rule 403 (literal-operator-id) "++" [reduce using rule 747 (ud-suffix)] "--" reduce using rule 403 (literal-operator-id) "--" [reduce using rule 747 (ud-suffix)] "auto" reduce using rule 403 (literal-operator-id) "auto" [reduce using rule 747 (ud-suffix)] "char" reduce using rule 403 (literal-operator-id) "char" [reduce using rule 747 (ud-suffix)] "char8_t" reduce using rule 403 (literal-operator-id) "char8_t" [reduce using rule 747 (ud-suffix)] "char16_t" reduce using rule 403 (literal-operator-id) "char16_t" [reduce using rule 747 (ud-suffix)] "char32_t" reduce using rule 403 (literal-operator-id) "char32_t" [reduce using rule 747 (ud-suffix)] "wchar_t" reduce using rule 403 (literal-operator-id) "wchar_t" [reduce using rule 747 (ud-suffix)] "bool" reduce using rule 403 (literal-operator-id) "bool" [reduce using rule 747 (ud-suffix)] "short" reduce using rule 403 (literal-operator-id) "short" [reduce using rule 747 (ud-suffix)] "int" reduce using rule 403 (literal-operator-id) "int" [reduce using rule 747 (ud-suffix)] "long" reduce using rule 403 (literal-operator-id) "long" [reduce using rule 747 (ud-suffix)] "signed" reduce using rule 403 (literal-operator-id) "signed" [reduce using rule 747 (ud-suffix)] "unsigned" reduce using rule 403 (literal-operator-id) "unsigned" [reduce using rule 747 (ud-suffix)] "float" reduce using rule 403 (literal-operator-id) "float" [reduce using rule 747 (ud-suffix)] "double" reduce using rule 403 (literal-operator-id) "double" [reduce using rule 747 (ud-suffix)] "void" reduce using rule 403 (literal-operator-id) "void" [reduce using rule 747 (ud-suffix)] "static_assert" reduce using rule 403 (literal-operator-id) "static_assert" [reduce using rule 747 (ud-suffix)] "static" reduce using rule 403 (literal-operator-id) "static" [reduce using rule 747 (ud-suffix)] "thread_local" reduce using rule 403 (literal-operator-id) "thread_local" [reduce using rule 747 (ud-suffix)] "mutable" reduce using rule 403 (literal-operator-id) "mutable" [reduce using rule 747 (ud-suffix)] "override" reduce using rule 403 (literal-operator-id) "override" [reduce using rule 747 (ud-suffix)] $default reduce using rule 403 (literal-operator-id)

State 779

170 conversion-declarator-optconversion-declarator $default reduce using rule 170 (conversion-declarator-opt)

State 780

172 conversion-type-idtype-specifier-seq conversion-declarator-opt $default reduce using rule 172 (conversion-type-id)

State 781

139 class-name IDENTIFIER 140 | simple-template-id 168 conversion-declarator ptr-operator conversion-declarator-opt 168 | ptr-operator conversion-declarator-opt 169 conversion-declarator-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 170 | conversion-declarator 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 169 (conversion-declarator-opt)] "::" [reduce using rule 169 (conversion-declarator-opt)] "&" [reduce using rule 169 (conversion-declarator-opt)] "&&" [reduce using rule 169 (conversion-declarator-opt)] "decltype" [reduce using rule 169 (conversion-declarator-opt)] "*" [reduce using rule 169 (conversion-declarator-opt)] $default reduce using rule 169 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 779 conversion-declarator-opt go to state 961 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 ptr-operator go to state 781 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 782

628 requirement-parameter-list"(" parameter-declaration-clause ")" ")" shift, and go to state 962

State 783

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 150 compound-requirement "{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 472 nested-requirement "requires" constraint-expression ";" 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 623 requirement simple-requirement 624 | type-requirement 625 | compound-requirement 626 | nested-requirement 627 requirement-body"{" requirement-seq "}" 631 requirement-seq requirement 632 | requirement-seq requirement 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 655 simple-requirement expression ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 736 type-requirement "typename" nested-name-specifier-opt type-name ";" 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 963 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 964 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 965 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 compound-requirement go to state 966 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 967 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 nested-requirement go to state 968 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requirement go to state 969 requirement-seq go to state 970 requires-expression go to state 309 shift-expression go to state 310 simple-requirement go to state 971 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 972 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 784

636 requires-expression"requires" requirement-parameter-list-opt requirement-body $default reduce using rule 636 (requires-expression)

State 785

582 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 973

State 786

583 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 974

State 787

584 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 975

State 788

585 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 976

State 789

280 expressionexpression "," assignment-expression 586 postfix-expression"typeid" "(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 977

State 790

587 postfix-expression"typeid" "(" type-id ")" ")" shift, and go to state 978

State 791

755 unary-expression"sizeof" "..." "(" IDENTIFIER ")" IDENTIFIER shift, and go to state 979

State 792

754 unary-expression"sizeof" "(" type-id ")" ")" shift, and go to state 980

State 793

756 unary-expression"alignof" "(" type-id ")" ")" shift, and go to state 981

State 794

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 124 capture simple-capture 125 | init-capture 126 capture-default "&" 127 | "=" 128 capture-list capture 129 | capture-list "," capture 225 delete-expressionSCOPE-opt "delete" "[" "]" cast-expression 349 init-capture ELLIPSIS-opt IDENTIFIER initializer 350 | "&" ELLIPSIS-opt IDENTIFIER initializer 383 lambda-capture capture-default 384 | capture-list 385 | capture-default "," capture-list 386 lambda-capture-opt %empty ["]"] 387 | lambda-capture 392 lambda-introducer"[" lambda-capture-opt "]" 648 simple-capture IDENTIFIER ELLIPSIS-opt 649 | "&" IDENTIFIER ELLIPSIS-opt 650 | "this" 651 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 461 "this" shift, and go to state 462 "=" shift, and go to state 463 "&" shift, and go to state 464 "]" shift, and go to state 982 "*" shift, and go to state 465 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "]" [reduce using rule 386 (lambda-capture-opt)] ELLIPSIS-opt go to state 466 capture go to state 467 capture-default go to state 468 capture-list go to state 469 init-capture go to state 470 lambda-capture go to state 471 lambda-capture-opt go to state 472 simple-capture go to state 473

State 795

224 delete-expressionSCOPE-opt "delete" cast-expression $default reduce using rule 224 (delete-expression)

State 796

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 483 new-placement"(" expression-list ")" 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 983 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 797

485 new-placement-optnew-placement $default reduce using rule 485 (new-placement-opt)

State 798

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 486 new-type-id type-specifier-seq new-declarator-opt 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "(" shift, and go to state 984 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 new-type-id go to state 985 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 986 typedef-name go to state 108 typename-specifier go to state 109

State 799

42 additive-expressionadditive-expression "+" multiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 451 multiplicative-expressionmultiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression "*" shift, and go to state 577 "/" shift, and go to state 578 "%" shift, and go to state 579 $default reduce using rule 42 (additive-expression)

State 800

43 additive-expressionadditive-expression "-" multiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 451 multiplicative-expressionmultiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression "*" shift, and go to state 577 "/" shift, and go to state 578 "%" shift, and go to state 579 $default reduce using rule 43 (additive-expression)

State 801

48 and-expressionand-expression "&" equality-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] 259 equality-expressionequality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression "==" shift, and go to state 549 "!=" shift, and go to state 550 $default reduce using rule 48 (and-expression)

State 802

149 compare-expressioncompare-expression "<=>" shift-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] 646 shift-expressionshift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression "<<" shift, and go to state 594 ">>" shift, and go to state 595 $default reduce using rule 149 (compare-expression)

State 803

259 equality-expressionequality-expression "==" relational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "|"] 619 relational-expressionrelational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression "<" shift, and go to state 590 ">" shift, and go to state 591 "<=" shift, and go to state 592 ">=" shift, and go to state 593 $default reduce using rule 259 (equality-expression) Conflict between rule 259 and token ">" resolved as shift ("==" < ">").

State 804

260 equality-expressionequality-expression "!=" relational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "|"] 619 relational-expressionrelational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression "<" shift, and go to state 590 ">" shift, and go to state 591 "<=" shift, and go to state 592 ">=" shift, and go to state 593 $default reduce using rule 260 (equality-expression) Conflict between rule 260 and token ">" resolved as shift ("!=" < ">").

State 805

48 and-expressionand-expression "&" equality-expression 265 exclusive-or-expressionexclusive-or-expression "^" and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] "&" shift, and go to state 547 $default reduce using rule 265 (exclusive-or-expression)

State 806

280 expressionexpression "," assignment-expression $default reduce using rule 280 (expression)

State 807

265 exclusive-or-expressionexclusive-or-expression "^" and-expression 348 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">", "|"] "^" shift, and go to state 551 $default reduce using rule 348 (inclusive-or-expression)

State 808

389 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt ")" shift, and go to state 987

State 809

391 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 712 template-parameter-listtemplate-parameter-list "," template-parameter "," shift, and go to state 443 ">" shift, and go to state 988

State 810

489 noexcept-specifier"noexcept" "(" constant-expression ")" 490 | "noexcept" [",", "...", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] "(" shift, and go to state 989 "(" [reduce using rule 490 (noexcept-specifier)] $default reduce using rule 490 (noexcept-specifier)

State 811

492 noexcept-specifier-optnoexcept-specifier $default reduce using rule 492 (noexcept-specifier-opt)

State 812

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 393 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 990

State 813

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 151 compound-statement"{" statement-seq-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 684 statement-seq statement 685 | statement-seq statement 686 statement-seq-opt %empty ["}"] 687 | statement-seq 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 686 (statement-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 997 statement-seq go to state 998 statement-seq-opt go to state 999 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 814

390 lambda-expressionlambda-introducer lambda-declarator compound-statement $default reduce using rule 390 (lambda-expression)

State 815

707 template-idliteral-operator-id "<" template-argument-list-opt ">" ">" shift, and go to state 1000

State 816

348 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 406 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">"] "|" shift, and go to state 554 $default reduce using rule 406 (logical-and-expression)

State 817

159 conditional-expressionlogical-or-expression "?" expression ":" assignment-expression 280 expressionexpression "," assignment-expression "," shift, and go to state 552 ":" shift, and go to state 1001

State 818

406 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 408 logical-or-expressionlogical-or-expression "||" logical-and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "||", ">"] "&&" shift, and go to state 562 $default reduce using rule 408 (logical-or-expression)

State 819

53 assignment-expressionlogical-or-expression assignment-operator initializer-clause $default reduce using rule 53 (assignment-expression)

State 820

451 multiplicative-expressionmultiplicative-expression "*" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 568 pm-expressionpm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression ".*" shift, and go to state 582 "->*" shift, and go to state 583 $default reduce using rule 451 (multiplicative-expression)

State 821

452 multiplicative-expressionmultiplicative-expression "/" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 568 pm-expressionpm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression ".*" shift, and go to state 582 "->*" shift, and go to state 583 $default reduce using rule 452 (multiplicative-expression)

State 822

453 multiplicative-expressionmultiplicative-expression "%" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 568 pm-expressionpm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression ".*" shift, and go to state 582 "->*" shift, and go to state 583 $default reduce using rule 453 (multiplicative-expression)

State 823

708 template-nameIDENTIFIER ["<"] 767 unqualified-idIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" reduce using rule 708 (template-name) "<" [reduce using rule 767 (unqualified-id)] $default reduce using rule 767 (unqualified-id)

State 824

468 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 705 template-idsimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 693 "::" [reduce using rule 705 (template-id)] $default reduce using rule 705 (template-id)

State 825

612 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id $default reduce using rule 612 (qualified-id)

State 826

706 template-idoperator-function-id "<" template-argument-list-opt ">" ">" shift, and go to state 1002

State 827

568 pm-expressionpm-expression ".*" cast-expression $default reduce using rule 568 (pm-expression)

State 828

569 pm-expressionpm-expression "->*" cast-expression $default reduce using rule 569 (pm-expression)

State 829

283 expression-list-optexpression-list $default reduce using rule 283 (expression-list-opt)

State 830

573 postfix-expressionpostfix-expression "(" expression-list-opt ")" ")" shift, and go to state 1003

State 831

572 postfix-expressionpostfix-expression "[" expression-list-opt "]" "]" shift, and go to state 1004

State 832

139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 343 id-expression unqualified-id 344 | qualified-id 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 579 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 656 simple-template-id template-name "<" template-argument-list-opt ">" 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 "~" shift, and go to state 354 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 1005 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 qualified-id go to state 307 simple-template-id go to state 311 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319

State 833

139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 343 id-expression unqualified-id 344 | qualified-id 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 578 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 656 simple-template-id template-name "<" template-argument-list-opt ">" 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 "~" shift, and go to state 354 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 1006 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 qualified-id go to state 307 simple-template-id go to state 311 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319

State 834

149 compare-expressioncompare-expression "<=>" shift-expression 619 relational-expressionrelational-expression "<" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 548 $default reduce using rule 619 (relational-expression)

State 835

149 compare-expressioncompare-expression "<=>" shift-expression 620 relational-expressionrelational-expression ">" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 548 $default reduce using rule 620 (relational-expression)

State 836

149 compare-expressioncompare-expression "<=>" shift-expression 621 relational-expressionrelational-expression "<=" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 548 $default reduce using rule 621 (relational-expression)

State 837

149 compare-expressioncompare-expression "<=>" shift-expression 622 relational-expressionrelational-expression ">=" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 548 $default reduce using rule 622 (relational-expression)

State 838

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 646 shift-expressionshift-expression "<<" additive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 545 "-" shift, and go to state 546 $default reduce using rule 646 (shift-expression)

State 839

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 647 shift-expressionshift-expression ">>" additive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 545 "-" shift, and go to state 546 $default reduce using rule 647 (shift-expression)

State 840

574 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" ")" shift, and go to state 1007

State 841

575 postfix-expressiontypename-specifier "(" expression-list-opt ")" ")" shift, and go to state 1008

State 842

455 namespace-aliasIDENTIFIER [";"] 461 namespace-nameIDENTIFIER [";"] ";" reduce using rule 455 (namespace-alias) ";" [reduce using rule 461 (namespace-name)] $default reduce using rule 455 (namespace-alias)

State 843

613 qualified-namespace-specifiernested-name-specifier-opt namespace-name $default reduce using rule 613 (qualified-namespace-specifier)

State 844

456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" $default reduce using rule 456 (namespace-alias-definition)

State 845

237 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER ["::"] 471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "{" shift, and go to state 1009 $default reduce using rule 237 (enclosing-namespace-specifier)

State 846

689 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" ")" shift, and go to state 1010

State 847

688 static_assert-declaration"static_assert" "(" constant-expression ")" ";" $default reduce using rule 688 (static_assert-declaration)

State 848

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty ["}"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 454 | INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 457 namespace-body declaration-seq-opt 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 210 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 849 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 1011 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 849

457 namespace-bodydeclaration-seq-opt $default reduce using rule 457 (namespace-body)

State 850

766 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" "}" shift, and go to state 1012

State 851

786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" ";" shift, and go to state 1013

State 852

46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" ")" shift, and go to state 1014

State 853

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" ")" shift, and go to state 1015

State 854

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" ";" shift, and go to state 1016

State 855

76 attribute-namespaceIDENTIFIER $default reduce using rule 76 (attribute-namespace)

State 856

87 attribute-using-prefix"using" attribute-namespace ":" ":" shift, and go to state 1017

State 857

76 attribute-namespaceIDENTIFIER ["::"] 85 attribute-tokenIDENTIFIER [",", "...", "(", "]"] "::" reduce using rule 76 (attribute-namespace) $default reduce using rule 85 (attribute-token)

State 858

74 attribute-listattribute "..." 78 attribute-optattribute [",", "]"] "..." shift, and go to state 1018 $default reduce using rule 78 (attribute-opt)

State 859

73 attribute-listattribute-list "," attribute-opt 75 | attribute-list "," attribute "..." 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "," shift, and go to state 1019 "]" shift, and go to state 1020

State 860

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER "::" shift, and go to state 1021

State 861

72 attribute-listattribute-opt $default reduce using rule 72 (attribute-list)

State 862

86 attribute-tokenattribute-scoped-token $default reduce using rule 86 (attribute-token)

State 863

67 attributeattribute-token attribute-argument-clause-opt 68 attribute-argument-clause "(" balanced-token-seq-opt ")" 69 attribute-argument-clause-opt %empty [",", "...", "]"] 70 | attribute-argument-clause "(" shift, and go to state 1022 $default reduce using rule 69 (attribute-argument-clause-opt) attribute-argument-clause go to state 1023 attribute-argument-clause-opt go to state 1024

State 864

179 cv-qualifier-seqcv-qualifier cv-qualifier-seq-opt $default reduce using rule 179 (cv-qualifier-seq)

State 865

345 identifier-listIDENTIFIER $default reduce using rule 345 (identifier-list)

State 866

346 identifier-listidentifier-list "," IDENTIFIER 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "," shift, and go to state 1025 "]" shift, and go to state 1026

State 867

328 function-body"=" "default" ";" 329 | "=" "delete" ";" "delete" shift, and go to state 1027 "default" shift, and go to state 1028

State 868

139 class-name IDENTIFIER 140 | simple-template-id 141 class-or-decltype nested-name-specifier-opt type-name 142 | nested-name-specifier "template" simple-template-id 143 | decltype-specifier 174 ctor-initializer":" mem-initializer-list 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 409 mem-initializer mem-initializer-id "(" expression-list-opt ")" 410 | mem-initializer-id braced-init-list 411 mem-initializer-id class-or-decltype 412 | IDENTIFIER 413 mem-initializer-list mem-initializer ELLIPSIS-opt 414 | mem-initializer-list "," mem-initializer ELLIPSIS-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 1029 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1030 decltype-specifier go to state 893 enum-name go to state 71 mem-initializer go to state 1031 mem-initializer-id go to state 1032 mem-initializer-list go to state 1033 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 894 nested-name-specifier-opt go to state 895 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 869

174 ctor-initializer ":" mem-initializer-list 175 ctor-initializer-opt %empty ["{"] 176 | ctor-initializer 334 function-try-block"try" ctor-initializer-opt compound-statement handler-seq ":" shift, and go to state 868 $default reduce using rule 175 (ctor-initializer-opt) ctor-initializer go to state 870 ctor-initializer-opt go to state 1034

State 870

176 ctor-initializer-optctor-initializer $default reduce using rule 176 (ctor-initializer-opt)

State 871

151 compound-statement "{" statement-seq-opt "}" 326 function-bodyctor-initializer-opt compound-statement "{" shift, and go to state 813 compound-statement go to state 1035

State 872

331 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body $default reduce using rule 331 (function-definition)

State 873

327 function-bodyfunction-try-block $default reduce using rule 327 (function-body)

State 874

791 virt-specifier-seqvirt-specifier-seq virt-specifier $default reduce using rule 791 (virt-specifier-seq)

State 875

330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body $default reduce using rule 330 (function-definition)

State 876

608 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 608 (ptr-operator)

State 877

177 cv-qualifier "const" 178 | "volatile" 179 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 180 cv-qualifier-seq-opt %empty [",", "...", "noexcept", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "final", "&&", "->", ">", "try", "requires", "override"] 181 | cv-qualifier-seq 564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "const" shift, and go to state 15 "volatile" shift, and go to state 16 $default reduce using rule 180 (cv-qualifier-seq-opt) cv-qualifier go to state 628 cv-qualifier-seq go to state 629 cv-qualifier-seq-opt go to state 1036

State 878

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 559 parameter-declaration-clauseparameter-declaration-list "," "..." 561 parameter-declaration-listparameter-declaration-list "," parameter-declaration "..." shift, and go to state 1037 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 1038

State 879

558 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt $default reduce using rule 558 (parameter-declaration-clause)

State 880

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 503 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1039

State 881

714 trailing-return-type"->" type-id $default reduce using rule 714 (trailing-return-type)

State 882

435 member-specificationaccess-specifier ":" member-specification-opt $default reduce using rule 435 (member-specification)

State 883

12 IDENTIFIER-optIDENTIFIER ["alignas", "[", ":"] 139 class-nameIDENTIFIER ["::"] 248 enum-nameIDENTIFIER ["::"] 455 namespace-aliasIDENTIFIER ["::"] 461 namespace-nameIDENTIFIER ["::"] 708 template-nameIDENTIFIER ["<"] 743 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 455 (namespace-alias)] "::" [reduce using rule 461 (namespace-name)] "::" [reduce using rule 743 (typedef-name)] "<" reduce using rule 708 (template-name) $default reduce using rule 12 (IDENTIFIER-opt)

State 884

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 429 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1040

State 885

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 119 brace-or-equal-initializer-opt %empty [",", ";"] 120 | brace-or-equal-initializer 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 426 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 427 | declarator requires-clause 428 | declarator brace-or-equal-initializer-opt 633 requires-clause "requires" constraint-logical-or-expression 788 virt-specifier "override" 789 | "final" 790 virt-specifier-seq virt-specifier 791 | virt-specifier-seq virt-specifier 792 virt-specifier-seq-opt %empty [",", "=", ";", ":", "{", "try"] 793 | virt-specifier-seq "=" shift, and go to state 396 "{" shift, and go to state 398 "final" shift, and go to state 632 "requires" shift, and go to state 399 "override" shift, and go to state 633 "," reduce using rule 119 (brace-or-equal-initializer-opt) "," [reduce using rule 792 (virt-specifier-seq-opt)] "=" [reduce using rule 792 (virt-specifier-seq-opt)] ";" reduce using rule 119 (brace-or-equal-initializer-opt) ";" [reduce using rule 792 (virt-specifier-seq-opt)] ":" reduce using rule 792 (virt-specifier-seq-opt) "{" [reduce using rule 792 (virt-specifier-seq-opt)] "try" reduce using rule 792 (virt-specifier-seq-opt) $default reduce using rule 119 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1041 brace-or-equal-initializer-opt go to state 1042 braced-init-list go to state 401 requires-clause go to state 1043 virt-specifier go to state 635 virt-specifier-seq go to state 636 virt-specifier-seq-opt go to state 1044

State 886

430 member-declarator-listmember-declarator $default reduce using rule 430 (member-declarator-list)

State 887

431 member-declarator-listmember-declarator-list "," member-declarator 433 member-declarator-list-optmember-declarator-list [";"] "," shift, and go to state 1045 $default reduce using rule 433 (member-declarator-list-opt)

State 888

415 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" ";" shift, and go to state 1046

State 889

238 enum-base ":" type-specifier-seq 239 enum-base-opt %empty [";"] 240 | enum-base 507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ":" shift, and go to state 683 $default reduce using rule 239 (enum-base-opt) enum-base go to state 684 enum-base-opt go to state 685

State 890

36 access-specifier "private" 37 | "protected" 38 | "public" 39 access-specifier-opt %empty [IDENTIFIER, "::", "decltype"] 40 | access-specifier 103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype "private" shift, and go to state 369 "protected" shift, and go to state 370 "public" shift, and go to state 371 $default reduce using rule 39 (access-specifier-opt) access-specifier go to state 1047 access-specifier-opt go to state 1048

State 891

27 VIRTUAL-opt %empty [IDENTIFIER, "::", "decltype"] 28 | "virtual" 104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype "virtual" shift, and go to state 1049 $default reduce using rule 27 (VIRTUAL-opt) VIRTUAL-opt go to state 1050

State 892

102 base-specifierattribute-specifier-seq-opt class-or-decltype $default reduce using rule 102 (base-specifier)

State 893

143 class-or-decltypedecltype-specifier [",", "...", "(", "{"] 466 nested-name-specifierdecltype-specifier "::" "::" shift, and go to state 189 $default reduce using rule 143 (class-or-decltype)

State 894

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 142 class-or-decltypenested-name-specifier "template" simple-template-id 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 470 nested-name-specifier-optnested-name-specifier [IDENTIFIER] IDENTIFIER shift, and go to state 198 "template" shift, and go to state 1051 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 470 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 895

139 class-name IDENTIFIER 140 | simple-template-id 141 class-or-decltypenested-name-specifier-opt type-name 248 enum-name IDENTIFIER 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 525 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1052 typedef-name go to state 108

State 896

105 base-specifier-listbase-specifier ELLIPSIS-opt $default reduce using rule 105 (base-specifier-list)

State 897

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 102 base-specifier attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 652 base-specifier go to state 1053

State 898

133 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt $default reduce using rule 133 (class-head)

State 899

363 initializer"(" expression-list ")" $default reduce using rule 363 (initializer)

State 900

366 initializer-listinitializer-clause ELLIPSIS-opt $default reduce using rule 366 (initializer-list)

State 901

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 367 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 1054 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 902

229 designator"." IDENTIFIER $default reduce using rule 229 (designator)

State 903

2 COMMA-opt"," ["}"] 226 designated-initializer-clause designator brace-or-equal-initializer 228 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause 229 designator "." IDENTIFIER "." shift, and go to state 669 $default reduce using rule 2 (COMMA-opt) designated-initializer-clause go to state 1055 designator go to state 672

State 904

122 braced-init-list"{" designated-initializer-list COMMA-opt "}" "}" shift, and go to state 1056

State 905

226 designated-initializer-clausedesignator brace-or-equal-initializer $default reduce using rule 226 (designated-initializer-clause)

State 906

2 COMMA-opt"," ["}"] 19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 367 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "}" reduce using rule 2 (COMMA-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 1054 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 907

121 braced-init-list"{" initializer-list COMMA-opt "}" "}" shift, and go to state 1057

State 908

116 boolean-literal BOOLEAN_LITERAL 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 165 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 570 pointer-literal POINTER_LITERAL 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "this" shift, and go to state 242 "(" shift, and go to state 674 "[" shift, and go to state 247 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 354 POINTER_LITERAL shift, and go to state 259 STRING_LITERAL shift, and go to state 118 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 boolean-literal go to state 277 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 pointer-literal go to state 304 primary-expression go to state 1058 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 909

116 boolean-literal BOOLEAN_LITERAL 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 164 constraint-logical-and-expression primary-expression 165 | constraint-logical-and-expression "&&" primary-expression 167 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 570 pointer-literal POINTER_LITERAL 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "this" shift, and go to state 242 "(" shift, and go to state 674 "[" shift, and go to state 247 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 354 POINTER_LITERAL shift, and go to state 259 STRING_LITERAL shift, and go to state 118 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 boolean-literal go to state 277 character-literal go to state 279 class-name go to state 55 constraint-logical-and-expression go to state 1059 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 pointer-literal go to state 304 primary-expression go to state 677 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 910

253 enumerator-definitionenumerator "=" constant-expression $default reduce using rule 253 (enumerator-definition)

State 911

250 enum-specifierenum-head "{" enumerator-list "," "}" $default reduce using rule 250 (enum-specifier)

State 912

255 enumerator-listenumerator-list "," enumerator-definition $default reduce using rule 255 (enumerator-list)

State 913

238 enum-base":" type-specifier-seq $default reduce using rule 238 (enum-base)

State 914

507 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 507 (opaque-enum-declaration)

State 915

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" "->" shift, and go to state 1060

State 916

449 module-partition-optmodule-partition $default reduce using rule 449 (module-partition-opt)

State 917

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1061

State 918

596 private-module-fragment"module" ":" "private" ";" declaration-seq-opt "private" shift, and go to state 1062

State 919

721 type-constraintnested-name-specifier-opt concept-name "<" template-argument-list-opt ">" $default reduce using rule 721 (type-constraint)

State 920

152 concept-definition"concept" concept-name "=" constraint-expression ";" ";" shift, and go to state 1063

State 921

163 constraint-expressionlogical-or-expression [";"] 408 logical-or-expressionlogical-or-expression "||" logical-and-expression "||" shift, and go to state 575 $default reduce using rule 163 (constraint-expression)

State 922

231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 1064

State 923

5 ELLIPSIS-opt %empty [",", ">"] 6 | "..." 699 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1065

State 924

493 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 564 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 365 "[" shift, and go to state 927 parameters-and-qualifiers go to state 1066

State 925

495 noptr-abstract-declarator"(" ptr-abstract-declarator ")" ")" shift, and go to state 1067

State 926

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 600 | ptr-operator ptr-abstract-declarator-opt 601 ptr-abstract-declarator-opt %empty [")"] 602 | ptr-abstract-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 703 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] ")" reduce using rule 601 (ptr-abstract-declarator-opt) $default reduce using rule 496 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 924 ptr-abstract-declarator go to state 932 ptr-abstract-declarator-opt go to state 933 ptr-operator go to state 926 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 927

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 161 constant-expression-opt %empty ["]"] 162 | constant-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 494 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "]" reduce using rule 161 (constant-expression-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 643 constant-expression-opt go to state 1068 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 928

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 493 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] 714 trailing-return-type "->" type-id "->" shift, and go to state 645 $default reduce using rule 493 (noptr-abstract-declarator) trailing-return-type go to state 1069

State 929

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 161 constant-expression-opt %empty ["]"] 162 | constant-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 499 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "]" reduce using rule 161 (constant-expression-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 643 constant-expression-opt go to state 1070 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 930

498 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers $default reduce using rule 498 (noptr-abstract-pack-declarator)

State 931

35 abstract-pack-declaratorptr-operator abstract-pack-declarator $default reduce using rule 35 (abstract-pack-declarator)

State 932

602 ptr-abstract-declarator-optptr-abstract-declarator $default reduce using rule 602 (ptr-abstract-declarator-opt)

State 933

600 ptr-abstract-declaratorptr-operator ptr-abstract-declarator-opt $default reduce using rule 600 (ptr-abstract-declarator)

State 934

566 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" $default reduce using rule 566 (placeholder-type-specifier)

State 935

6 ELLIPSIS-opt"..." [IDENTIFIER, "::", "operator", "decltype", "~"] 500 noptr-abstract-pack-declarator"..." [",", "...", "=", "(", ")", "[", ">"] IDENTIFIER reduce using rule 6 (ELLIPSIS-opt) "::" reduce using rule 6 (ELLIPSIS-opt) "operator" reduce using rule 6 (ELLIPSIS-opt) "decltype" reduce using rule 6 (ELLIPSIS-opt) "~" reduce using rule 6 (ELLIPSIS-opt) $default reduce using rule 500 (noptr-abstract-pack-declarator)

State 936

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 504 | "(" ptr-declarator ")" 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 936 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] "[" reduce using rule 496 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 924 noptr-declarator go to state 347 ptr-abstract-declarator go to state 925 ptr-declarator go to state 348 ptr-operator go to state 1071 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 937

556 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt [",", "...", ")", ">"] 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause "=" shift, and go to state 1072 $default reduce using rule 556 (parameter-declaration)

State 938

554 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator [",", "...", ")", ">"] 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause "=" shift, and go to state 1073 $default reduce using rule 554 (parameter-declaration)

State 939

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 139 class-name IDENTIFIER 140 | simple-template-id 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 600 | ptr-operator ptr-abstract-declarator-opt 601 ptr-abstract-declarator-opt %empty [",", "...", "=", ")", ">"] 602 | ptr-abstract-declarator 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 935 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 936 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 601 (ptr-abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] "[" reduce using rule 496 (noptr-abstract-declarator-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 601 (ptr-abstract-declarator-opt) ELLIPSIS-opt go to state 165 abstract-pack-declarator go to state 931 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 924 noptr-abstract-pack-declarator go to state 709 noptr-declarator go to state 347 ptr-abstract-declarator go to state 932 ptr-abstract-declarator-opt go to state 933 ptr-declarator go to state 368 ptr-operator go to state 939 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 940

732 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 732 (type-parameter)

State 941

139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 343 id-expression unqualified-id 344 | qualified-id 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 656 simple-template-id template-name "<" template-argument-list-opt ">" 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 733 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression 743 typedef-name IDENTIFIER 744 | simple-template-id 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 "~" shift, and go to state 354 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 1074 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 356 operator-function-id go to state 302 qualified-id go to state 307 simple-template-id go to state 311 template-id go to state 314 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 319

State 942

731 type-parametertype-constraint IDENTIFIER-opt "=" type-id $default reduce using rule 731 (type-parameter)

State 943

729 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id $default reduce using rule 729 (type-parameter)

State 944

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" $default reduce using rule 44 (alias-declaration)

State 945

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 222 defining-type-specifier-seqdefining-type-specifier attribute-specifier-seq-opt ["...", IDENTIFIER, "::", ";", "(", "&", "[", "&&", "decltype", "*"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 222 (defining-type-specifier-seq)] $default reduce using rule 222 (defining-type-specifier-seq) alignment-specifier go to state 166 attribute-specifier go to state 167

State 946

223 defining-type-specifier-seqdefining-type-specifier defining-type-specifier-seq $default reduce using rule 223 (defining-type-specifier-seq)

State 947

218 defining-type-iddefining-type-specifier-seq abstract-declarator-opt $default reduce using rule 218 (defining-type-id)

State 948

488 noexcept-expression"noexcept" "(" expression ")" $default reduce using rule 488 (noexcept-expression)

State 949

289 fold-expression"(" "..." fold-operator cast-expression ")" ")" shift, and go to state 1075

State 950

288 fold-expression"(" cast-expression fold-operator "..." ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 291 fold-operator "+" 292 | "-" 293 | "*" 294 | "/" 295 | "%" 296 | "^" 297 | "&" 298 | "|" 299 | "<<" 300 | ">>" 301 | "+=" 302 | "-=" 303 | "*=" 304 | "/=" 305 | "%=" 306 | "^=" 307 | "&=" 308 | "|=" 309 | "<<=" 310 | ">>=" 311 | "=" 312 | "==" 313 | "!=" 314 | "<" 315 | ">" 316 | "<=" 317 | ">=" 318 | "&&" 319 | "||" 320 | "," 321 | ".*" 322 | "->*" "," shift, and go to state 729 "+" shift, and go to state 730 "-" shift, and go to state 731 "=" shift, and go to state 732 ")" shift, and go to state 1076 "&" shift, and go to state 733 "*=" shift, and go to state 734 "/=" shift, and go to state 735 "%=" shift, and go to state 736 "+=" shift, and go to state 737 "-=" shift, and go to state 738 ">>=" shift, and go to state 739 "<<=" shift, and go to state 740 "&=" shift, and go to state 741 "^=" shift, and go to state 742 "|=" shift, and go to state 743 "&&" shift, and go to state 744 "||" shift, and go to state 745 "==" shift, and go to state 746 "!=" shift, and go to state 747 "^" shift, and go to state 748 "<" shift, and go to state 749 ">" shift, and go to state 750 "*" shift, and go to state 751 "/" shift, and go to state 752 "%" shift, and go to state 753 "|" shift, and go to state 754 "<<" shift, and go to state 755 ">>" shift, and go to state 756 "<=" shift, and go to state 757 ">=" shift, and go to state 758 ".*" shift, and go to state 759 "->*" shift, and go to state 760 fold-operator go to state 1077

State 951

131 cast-expression"(" type-id ")" cast-expression $default reduce using rule 131 (cast-expression)

State 952

649 simple-capture"&" IDENTIFIER ELLIPSIS-opt $default reduce using rule 649 (simple-capture)

State 953

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 350 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 362 initializer brace-or-equal-initializer 363 | "(" expression-list ")" "=" shift, and go to state 396 "(" shift, and go to state 397 "{" shift, and go to state 398 brace-or-equal-initializer go to state 400 braced-init-list go to state 401 initializer go to state 1078

State 954

349 init-captureELLIPSIS-opt IDENTIFIER initializer $default reduce using rule 349 (init-capture)

State 955

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 350 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 649 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 IDENTIFIER shift, and go to state 766 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 767

State 956

129 capture-listcapture-list "," capture 385 lambda-capturecapture-default "," capture-list ["]"] "," shift, and go to state 771 $default reduce using rule 385 (lambda-capture)

State 957

129 capture-listcapture-list "," capture $default reduce using rule 129 (capture-list)

State 958

513 overloadable-operator"delete" "[" "]" $default reduce using rule 513 (overloadable-operator)

State 959

512 overloadable-operator"new" "[" "]" $default reduce using rule 512 (overloadable-operator)

State 960

509 operator-function-id"operator" overloadable-operator "<" template-argument-list-opt ">" ">" shift, and go to state 1079

State 961

168 conversion-declaratorptr-operator conversion-declarator-opt $default reduce using rule 168 (conversion-declarator)

State 962

628 requirement-parameter-list"(" parameter-declaration-clause ")" $default reduce using rule 628 (requirement-parameter-list)

State 963

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 736 type-requirement"typename" nested-name-specifier-opt type-name ";" 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier"typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 1080 nested-name-specifier-opt go to state 1081 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 964

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1082 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 965

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 163 constraint-expression logical-or-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 472 nested-requirement"requires" constraint-expression ";" 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 628 requirement-parameter-list "(" parameter-declaration-clause ")" 629 requirement-parameter-list-opt %empty ["{"] 630 | requirement-parameter-list 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 636 | "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 1083 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "{" reduce using rule 629 (requirement-parameter-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 constraint-expression go to state 1084 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 921 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requirement-parameter-list go to state 523 requirement-parameter-list-opt go to state 524 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 966

625 requirementcompound-requirement $default reduce using rule 625 (requirement)

State 967

280 expressionexpression "," assignment-expression 655 simple-requirementexpression ";" "," shift, and go to state 552 ";" shift, and go to state 1085

State 968

626 requirementnested-requirement $default reduce using rule 626 (requirement)

State 969

631 requirement-seqrequirement $default reduce using rule 631 (requirement-seq)

State 970

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 150 compound-requirement "{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 472 nested-requirement "requires" constraint-expression ";" 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 623 requirement simple-requirement 624 | type-requirement 625 | compound-requirement 626 | nested-requirement 627 requirement-body"{" requirement-seq "}" 632 requirement-seqrequirement-seq requirement 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 655 simple-requirement expression ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 736 type-requirement "typename" nested-name-specifier-opt type-name ";" 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 963 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 964 "}" shift, and go to state 1086 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 965 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 compound-requirement go to state 966 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 967 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 nested-requirement go to state 968 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requirement go to state 1087 requires-expression go to state 309 shift-expression go to state 310 simple-requirement go to state 971 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 972 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 971

623 requirementsimple-requirement $default reduce using rule 623 (requirement)

State 972

624 requirementtype-requirement $default reduce using rule 624 (requirement)

State 973

582 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1088

State 974

583 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1089

State 975

584 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1090

State 976

585 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1091

State 977

586 postfix-expression"typeid" "(" expression ")" $default reduce using rule 586 (postfix-expression)

State 978

587 postfix-expression"typeid" "(" type-id ")" $default reduce using rule 587 (postfix-expression)

State 979

755 unary-expression"sizeof" "..." "(" IDENTIFIER ")" ")" shift, and go to state 1092

State 980

754 unary-expression"sizeof" "(" type-id ")" $default reduce using rule 754 (unary-expression)

State 981

756 unary-expression"alignof" "(" type-id ")" $default reduce using rule 756 (unary-expression)

State 982

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 1093 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 983

483 new-placement"(" expression-list ")" ")" shift, and go to state 1094

State 984

136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 478 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 1095 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 109

State 985

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 477 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 479 new-initializer "(" expression-list-opt ")" 480 | braced-init-list 481 new-initializer-opt %empty [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 482 | new-initializer "(" shift, and go to state 1096 "{" shift, and go to state 398 "{" [reduce using rule 481 (new-initializer-opt)] $default reduce using rule 481 (new-initializer-opt) braced-init-list go to state 1097 new-initializer go to state 1098 new-initializer-opt go to state 1099

State 986

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 473 new-declarator ptr-operator new-declarator-opt 474 | noptr-new-declarator 475 new-declarator-opt %empty [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 476 | new-declarator 486 new-type-idtype-specifier-seq new-declarator-opt 505 noptr-new-declarator "[" expression-opt "]" attribute-specifier-seq-opt 506 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "[" shift, and go to state 1100 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "&" [reduce using rule 475 (new-declarator-opt)] "&&" [reduce using rule 475 (new-declarator-opt)] "*" [reduce using rule 475 (new-declarator-opt)] $default reduce using rule 475 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 new-declarator go to state 1101 new-declarator-opt go to state 1102 noptr-new-declarator go to state 1103 ptr-operator go to state 1104 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 987

133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 193 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->", "requires"] 194 | decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 389 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 393 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 193 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 557 decl-specifier-seq-opt go to state 558 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 lambda-specifiers go to state 1105 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 988

391 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 633 requires-clause "requires" constraint-logical-or-expression 634 requires-clause-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "alignas", "(", "[", "{", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 635 | requires-clause "requires" shift, and go to state 399 $default reduce using rule 634 (requires-clause-opt) requires-clause go to state 718 requires-clause-opt go to state 1106

State 989

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 489 noexcept-specifier"noexcept" "(" constant-expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 1107 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 990

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 393 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 714 trailing-return-type "->" type-id 715 trailing-return-type-opt %empty ["{", "requires"] 716 | trailing-return-type "alignas" shift, and go to state 158 "[" shift, and go to state 162 "->" shift, and go to state 645 $default reduce using rule 715 (trailing-return-type-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 trailing-return-type go to state 1108 trailing-return-type-opt go to state 1109

State 991

456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" IDENTIFIER shift, and go to state 1110

State 992

84 attribute-specifier-seq-optattribute-specifier-seq ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 653 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 84 (attribute-specifier-seq-opt)] "extern" [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 84 (attribute-specifier-seq-opt)] "::" [reduce using rule 84 (attribute-specifier-seq-opt)] "typename" [reduce using rule 84 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 84 (attribute-specifier-seq-opt)] "class" [reduce using rule 84 (attribute-specifier-seq-opt)] "struct" [reduce using rule 84 (attribute-specifier-seq-opt)] "union" [reduce using rule 84 (attribute-specifier-seq-opt)] "const" [reduce using rule 84 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 84 (attribute-specifier-seq-opt)] "friend" [reduce using rule 84 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 84 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 84 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 84 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 84 (attribute-specifier-seq-opt)] "auto" reduce using rule 84 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 84 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "bool" [reduce using rule 84 (attribute-specifier-seq-opt)] "short" [reduce using rule 84 (attribute-specifier-seq-opt)] "int" [reduce using rule 84 (attribute-specifier-seq-opt)] "long" [reduce using rule 84 (attribute-specifier-seq-opt)] "signed" [reduce using rule 84 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 84 (attribute-specifier-seq-opt)] "float" [reduce using rule 84 (attribute-specifier-seq-opt)] "double" [reduce using rule 84 (attribute-specifier-seq-opt)] "void" [reduce using rule 84 (attribute-specifier-seq-opt)] "static" [reduce using rule 84 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 84 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 153 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 993

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 151 compound-statement "{" statement-seq-opt "}" 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 173 coroutine-return-statement "co_return" expr-or-braced-init-list-opt ";" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 279 expression assignment-expression 280 | expression "," assignment-expression 284 expression-opt %empty [";"] 285 | expression 286 expression-statement expression-opt ";" 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 332 function-specifier "virtual" 333 | explicit-specifier 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 371 iteration-statement "while" "(" condition ")" statement 372 | "do" statement "while" "(" expression ")" ";" 373 | "for" "(" init-statement condition-opt ";" expression-opt ")" statement 374 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 375 jump-statement "break" ";" 376 | "continue" ";" 377 | "return" expr-or-braced-init-list-opt ";" 378 | coroutine-return-statement 379 | "goto" IDENTIFIER ";" 380 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 640 selection-statement "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 642 | "if" NOT-opt "consteval" compound-statement 643 | "if" NOT-opt "consteval" compound-statement "else" statement 644 | "switch" "(" init-statement-opt condition ")" statement 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 677 statementattribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 683 | attribute-specifier-seq-opt try-block 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 719 try-block "try" compound-statement handler-seq 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 1111 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 157 "alignas" shift, and go to state 158 "(" shift, and go to state 245 "&" shift, and go to state 246 "asm" shift, and go to state 161 "[" shift, and go to state 1112 "co_await" shift, and go to state 248 "{" shift, and go to state 813 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "co_return" shift, and go to state 1113 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 "default" shift, and go to state 1114 "try" shift, and go to state 1115 INTEGER_LITERAL shift, and go to state 254 "while" shift, and go to state 1116 "do" shift, and go to state 1117 "for" shift, and go to state 1118 "break" shift, and go to state 1119 "continue" shift, and go to state 1120 "return" shift, and go to state 1121 "goto" shift, and go to state 1122 "case" shift, and go to state 1123 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "if" shift, and go to state 1124 "switch" shift, and go to state 1125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ";" reduce using rule 284 (expression-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 alignment-specifier go to state 166 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier go to state 167 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 280 compound-statement go to state 1126 conditional-expression go to state 281 conversion-function-id go to state 282 coroutine-return-statement go to state 1127 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1128 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 284 exclusive-or-expression go to state 285 explicit-specifier go to state 155 expression go to state 1129 expression-opt go to state 1130 expression-statement go to state 1131 floating-point-literal go to state 287 fold-expression go to state 288 function-specifier go to state 79 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 iteration-statement go to state 1132 jump-statement go to state 1133 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 selection-statement go to state 1134 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 storage-class-specifier go to state 99 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 try-block go to state 1135 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 994

212 declaration-statementblock-declaration $default reduce using rule 212 (declaration-statement)

State 995

682 statementdeclaration-statement $default reduce using rule 682 (statement)

State 996

676 statementlabeled-statement $default reduce using rule 676 (statement)

State 997

684 statement-seqstatement $default reduce using rule 684 (statement-seq)

State 998

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 685 statement-seqstatement-seq statement 687 statement-seq-optstatement-seq ["}"] 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 687 (statement-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1136 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 999

151 compound-statement"{" statement-seq-opt "}" "}" shift, and go to state 1137

State 1000

707 template-idliteral-operator-id "<" template-argument-list-opt ">" $default reduce using rule 707 (template-id)

State 1001

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 1138 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1002

706 template-idoperator-function-id "<" template-argument-list-opt ">" $default reduce using rule 706 (template-id)

State 1003

573 postfix-expressionpostfix-expression "(" expression-list-opt ")" $default reduce using rule 573 (postfix-expression)

State 1004

572 postfix-expressionpostfix-expression "[" expression-list-opt "]" $default reduce using rule 572 (postfix-expression)

State 1005

579 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression $default reduce using rule 579 (postfix-expression)

State 1006

578 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression $default reduce using rule 578 (postfix-expression)

State 1007

574 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" $default reduce using rule 574 (postfix-expression)

State 1008

575 postfix-expressiontypename-specifier "(" expression-list-opt ")" $default reduce using rule 575 (postfix-expression)

State 1009

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty ["}"] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 457 namespace-body declaration-seq-opt 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 471 | "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 210 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 849 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 1139 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1010

689 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" ";" shift, and go to state 1140

State 1011

454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" "}" shift, and go to state 1141

State 1012

766 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" $default reduce using rule 766 (unnamed-namespace-definition)

State 1013

786 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" $default reduce using rule 786 (using-directive)

State 1014

46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" $default reduce using rule 46 (alignment-specifier)

State 1015

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" $default reduce using rule 45 (alignment-specifier)

State 1016

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" $default reduce using rule 49 (asm-declaration)

State 1017

87 attribute-using-prefix"using" attribute-namespace ":" $default reduce using rule 87 (attribute-using-prefix)

State 1018

74 attribute-listattribute "..." $default reduce using rule 74 (attribute-list)

State 1019

67 attribute attribute-token attribute-argument-clause-opt 73 attribute-listattribute-list "," attribute-opt 75 | attribute-list "," attribute "..." 76 attribute-namespace IDENTIFIER 77 attribute-opt %empty [",", "]"] 78 | attribute 79 attribute-scoped-token attribute-namespace "::" IDENTIFIER 85 attribute-token IDENTIFIER 86 | attribute-scoped-token IDENTIFIER shift, and go to state 857 $default reduce using rule 77 (attribute-opt) attribute go to state 1142 attribute-namespace go to state 860 attribute-opt go to state 1143 attribute-scoped-token go to state 862 attribute-token go to state 863

State 1020

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "]" shift, and go to state 1144

State 1021

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER IDENTIFIER shift, and go to state 1145

State 1022

68 attribute-argument-clause"(" balanced-token-seq-opt ")" 91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty [")"] 98 | balanced-token-seq "(" shift, and go to state 1146 "[" shift, and go to state 1147 "{" shift, and go to state 1148 BALANCED_TOKEN shift, and go to state 1149 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1150 balanced-token-seq go to state 1151 balanced-token-seq-opt go to state 1152

State 1023

70 attribute-argument-clause-optattribute-argument-clause $default reduce using rule 70 (attribute-argument-clause-opt)

State 1024

67 attributeattribute-token attribute-argument-clause-opt $default reduce using rule 67 (attribute)

State 1025

346 identifier-listidentifier-list "," IDENTIFIER IDENTIFIER shift, and go to state 1153

State 1026

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 362 initializer brace-or-equal-initializer 363 | "(" expression-list ")" 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "=" shift, and go to state 396 "(" shift, and go to state 397 "{" shift, and go to state 398 brace-or-equal-initializer go to state 400 braced-init-list go to state 401 initializer go to state 1154

State 1027

329 function-body"=" "delete" ";" ";" shift, and go to state 1155

State 1028

328 function-body"=" "default" ";" ";" shift, and go to state 1156

State 1029

139 class-nameIDENTIFIER ["::"] 248 enum-nameIDENTIFIER ["::"] 412 mem-initializer-idIDENTIFIER ["(", "{"] 455 namespace-aliasIDENTIFIER ["::"] 461 namespace-nameIDENTIFIER ["::"] 708 template-nameIDENTIFIER ["<"] 743 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 455 (namespace-alias)] "::" [reduce using rule 461 (namespace-name)] "::" [reduce using rule 743 (typedef-name)] "<" reduce using rule 708 (template-name) $default reduce using rule 412 (mem-initializer-id)

State 1030

411 mem-initializer-idclass-or-decltype $default reduce using rule 411 (mem-initializer-id)

State 1031

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 413 mem-initializer-listmem-initializer ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1157

State 1032

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 409 mem-initializermem-initializer-id "(" expression-list-opt ")" 410 | mem-initializer-id braced-init-list "(" shift, and go to state 1158 "{" shift, and go to state 398 braced-init-list go to state 1159

State 1033

174 ctor-initializer":" mem-initializer-list ["{"] 414 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt "," shift, and go to state 1160 $default reduce using rule 174 (ctor-initializer)

State 1034

151 compound-statement "{" statement-seq-opt "}" 334 function-try-block"try" ctor-initializer-opt compound-statement handler-seq "{" shift, and go to state 813 compound-statement go to state 1161

State 1035

326 function-bodyctor-initializer-opt compound-statement $default reduce using rule 326 (function-body)

State 1036

564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 614 ref-qualifier "&" 615 | "&&" 616 ref-qualifier-opt %empty [",", "...", "noexcept", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] 617 | ref-qualifier "&" shift, and go to state 357 "&&" shift, and go to state 358 $default reduce using rule 616 (ref-qualifier-opt) ref-qualifier go to state 359 ref-qualifier-opt go to state 1162

State 1037

559 parameter-declaration-clauseparameter-declaration-list "," "..." $default reduce using rule 559 (parameter-declaration-clause)

State 1038

561 parameter-declaration-listparameter-declaration-list "," parameter-declaration $default reduce using rule 561 (parameter-declaration-list)

State 1039

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 503 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 503 (noptr-declarator)] $default reduce using rule 503 (noptr-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1040

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 429 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt "alignas" shift, and go to state 158 "[" shift, and go to state 162 ":" shift, and go to state 1163 alignment-specifier go to state 166 attribute-specifier go to state 167

State 1041

120 brace-or-equal-initializer-optbrace-or-equal-initializer $default reduce using rule 120 (brace-or-equal-initializer-opt)

State 1042

428 member-declaratordeclarator brace-or-equal-initializer-opt $default reduce using rule 428 (member-declarator)

State 1043

174 ctor-initializer ":" mem-initializer-list 175 ctor-initializer-opt %empty ["{"] 176 | ctor-initializer 326 function-body ctor-initializer-opt compound-statement 327 | function-try-block 328 | "=" "default" ";" 329 | "=" "delete" ";" 331 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 334 function-try-block "try" ctor-initializer-opt compound-statement handler-seq 427 member-declaratordeclarator requires-clause [",", ";"] "=" shift, and go to state 867 ":" shift, and go to state 868 "try" shift, and go to state 869 "{" reduce using rule 175 (ctor-initializer-opt) $default reduce using rule 427 (member-declarator) ctor-initializer go to state 870 ctor-initializer-opt go to state 871 function-body go to state 872 function-try-block go to state 873

State 1044

174 ctor-initializer ":" mem-initializer-list 175 ctor-initializer-opt %empty ["{"] 176 | ctor-initializer 326 function-body ctor-initializer-opt compound-statement 327 | function-try-block 328 | "=" "default" ";" 329 | "=" "delete" ";" 330 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 334 function-try-block "try" ctor-initializer-opt compound-statement handler-seq 426 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 609 pure-specifier "=" INTEGER_LITERAL 610 pure-specifier-opt %empty [",", ";"] 611 | pure-specifier "=" shift, and go to state 1164 ":" shift, and go to state 868 "try" shift, and go to state 869 "{" reduce using rule 175 (ctor-initializer-opt) $default reduce using rule 610 (pure-specifier-opt) ctor-initializer go to state 870 ctor-initializer-opt go to state 871 function-body go to state 875 function-try-block go to state 873 pure-specifier go to state 1165 pure-specifier-opt go to state 1166

State 1045

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 11 IDENTIFIER-opt %empty ["alignas", "[", ":"] 12 | IDENTIFIER 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 426 member-declarator declarator virt-specifier-seq-opt pure-specifier-opt 427 | declarator requires-clause 428 | declarator brace-or-equal-initializer-opt 429 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 431 member-declarator-listmember-declarator-list "," member-declarator 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 883 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 165 IDENTIFIER-opt go to state 884 class-name go to state 55 declarator go to state 1167 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 member-declarator go to state 1168 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1046

415 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" $default reduce using rule 415 (member-declaration)

State 1047

40 access-specifier-optaccess-specifier $default reduce using rule 40 (access-specifier-opt)

State 1048

103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 139 class-name IDENTIFIER 140 | simple-template-id 141 class-or-decltype nested-name-specifier-opt type-name 142 | nested-name-specifier "template" simple-template-id 143 | decltype-specifier 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1169 decltype-specifier go to state 893 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 894 nested-name-specifier-opt go to state 895 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1049

28 VIRTUAL-opt"virtual" $default reduce using rule 28 (VIRTUAL-opt)

State 1050

104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 139 class-name IDENTIFIER 140 | simple-template-id 141 class-or-decltype nested-name-specifier-opt type-name 142 | nested-name-specifier "template" simple-template-id 143 | decltype-specifier 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1170 decltype-specifier go to state 893 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 894 nested-name-specifier-opt go to state 895 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1051

22 TEMPLATE-opt"template" [IDENTIFIER] 142 class-or-decltypenested-name-specifier "template" simple-template-id 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] simple-template-id go to state 1171 template-name go to state 102

State 1052

141 class-or-decltypenested-name-specifier-opt type-name $default reduce using rule 141 (class-or-decltype)

State 1053

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1172

State 1054

5 ELLIPSIS-opt %empty [",", ")", "]", "}"] 6 | "..." 367 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1173

State 1055

228 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause $default reduce using rule 228 (designated-initializer-list)

State 1056

122 braced-init-list"{" designated-initializer-list COMMA-opt "}" $default reduce using rule 122 (braced-init-list)

State 1057

121 braced-init-list"{" initializer-list COMMA-opt "}" $default reduce using rule 121 (braced-init-list)

State 1058

165 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression $default reduce using rule 165 (constraint-logical-and-expression)

State 1059

165 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 167 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "&&" shift, and go to state 908 $default reduce using rule 167 (constraint-logical-or-expression) Conflict between rule 167 and token "&&" resolved as shift ("||" < "&&").

State 1060

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 simple-template-id go to state 1174 template-name go to state 102

State 1061

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" ";" shift, and go to state 1175 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 1062

596 private-module-fragment"module" ":" "private" ";" declaration-seq-opt ";" shift, and go to state 1176

State 1063

152 concept-definition"concept" concept-name "=" constraint-expression ";" $default reduce using rule 152 (concept-definition)

State 1064

231 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER $default reduce using rule 231 (elaborated-type-specifier)

State 1065

699 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt $default reduce using rule 699 (template-argument-list)

State 1066

493 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers $default reduce using rule 493 (noptr-abstract-declarator)

State 1067

495 noptr-abstract-declarator"(" ptr-abstract-declarator ")" $default reduce using rule 495 (noptr-abstract-declarator)

State 1068

494 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1177

State 1069

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type $default reduce using rule 30 (abstract-declarator)

State 1070

499 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1178

State 1071

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 600 | ptr-operator ptr-abstract-declarator-opt 601 ptr-abstract-declarator-opt %empty [")"] 602 | ptr-abstract-declarator 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 936 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] ")" reduce using rule 601 (ptr-abstract-declarator-opt) "[" reduce using rule 496 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 924 noptr-declarator go to state 347 ptr-abstract-declarator go to state 932 ptr-abstract-declarator-opt go to state 933 ptr-declarator go to state 368 ptr-operator go to state 1071 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1072

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 557 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 1179 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1073

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 555 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 1180 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1074

733 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression $default reduce using rule 733 (type-parameter)

State 1075

289 fold-expression"(" "..." fold-operator cast-expression ")" $default reduce using rule 289 (fold-expression)

State 1076

288 fold-expression"(" cast-expression fold-operator "..." ")" $default reduce using rule 288 (fold-expression)

State 1077

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 1181 character-literal go to state 279 class-name go to state 55 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 requires-expression go to state 309 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 1078

350 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer $default reduce using rule 350 (init-capture)

State 1079

509 operator-function-id"operator" overloadable-operator "<" template-argument-list-opt ">" $default reduce using rule 509 (operator-function-id)

State 1080

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 467 nested-name-specifiernested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 470 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 745 typename-specifier"typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 229 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 470 (nested-name-specifier-opt)] TEMPLATE-opt go to state 231

State 1081

139 class-name IDENTIFIER 140 | simple-template-id 248 enum-name IDENTIFIER 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 736 type-requirement"typename" nested-name-specifier-opt type-name ";" 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 525 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1182 typedef-name go to state 108

State 1082

150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 280 expressionexpression "," assignment-expression "," shift, and go to state 552 "}" shift, and go to state 1183

State 1083

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 288 | "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 555 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 556 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 557 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 558 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 559 | parameter-declaration-list "," "..." 560 parameter-declaration-list parameter-declaration 561 | parameter-declaration-list "," parameter-declaration 562 parameter-declaration-list-opt %empty ["...", ")"] 563 | parameter-declaration-list 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 628 requirement-parameter-list"(" parameter-declaration-clause ")" 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 724 type-id type-specifier-seq abstract-declarator-opt 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "..." shift, and go to state 457 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 "..." [reduce using rule 562 (parameter-declaration-list-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "this" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] ")" reduce using rule 562 (parameter-declaration-list-opt) "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 458 character-literal go to state 279 class-key go to state 424 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 459 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 parameter-declaration go to state 639 parameter-declaration-clause go to state 782 parameter-declaration-list go to state 641 parameter-declaration-list-opt go to state 642 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 427 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 460 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 433 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1084

472 nested-requirement"requires" constraint-expression ";" ";" shift, and go to state 1184

State 1085

655 simple-requirementexpression ";" $default reduce using rule 655 (simple-requirement)

State 1086

627 requirement-body"{" requirement-seq "}" $default reduce using rule 627 (requirement-body)

State 1087

632 requirement-seqrequirement-seq requirement $default reduce using rule 632 (requirement-seq)

State 1088

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1185 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1089

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1186 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1090

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1187 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1091

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1188 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1092

755 unary-expression"sizeof" "..." "(" IDENTIFIER ")" $default reduce using rule 755 (unary-expression)

State 1093

225 delete-expressionSCOPE-opt "delete" "[" "]" cast-expression $default reduce using rule 225 (delete-expression)

State 1094

483 new-placement"(" expression-list ")" $default reduce using rule 483 (new-placement)

State 1095

478 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt ")" shift, and go to state 1189

State 1096

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 282 expression-list-opt %empty [")"] 283 | expression-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 479 new-initializer"(" expression-list-opt ")" 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 829 expression-list-opt go to state 1190 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1097

480 new-initializerbraced-init-list $default reduce using rule 480 (new-initializer)

State 1098

482 new-initializer-optnew-initializer $default reduce using rule 482 (new-initializer-opt)

State 1099

477 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt $default reduce using rule 477 (new-expression)

State 1100

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 284 expression-opt %empty ["]"] 285 | expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 505 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "]" reduce using rule 284 (expression-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1129 expression-opt go to state 1191 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1101

476 new-declarator-optnew-declarator $default reduce using rule 476 (new-declarator-opt)

State 1102

486 new-type-idtype-specifier-seq new-declarator-opt $default reduce using rule 486 (new-type-id)

State 1103

474 new-declaratornoptr-new-declarator [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 506 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt "[" shift, and go to state 1192 $default reduce using rule 474 (new-declarator)

State 1104

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 473 new-declarator ptr-operator new-declarator-opt 473 | ptr-operator new-declarator-opt 474 | noptr-new-declarator 475 new-declarator-opt %empty [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 476 | new-declarator 505 noptr-new-declarator "[" expression-opt "]" attribute-specifier-seq-opt 506 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "[" shift, and go to state 1100 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "&" [reduce using rule 475 (new-declarator-opt)] "&&" [reduce using rule 475 (new-declarator-opt)] "*" [reduce using rule 475 (new-declarator-opt)] $default reduce using rule 475 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 new-declarator go to state 1101 new-declarator-opt go to state 1193 noptr-new-declarator go to state 1103 ptr-operator go to state 1104 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1105

389 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 633 requires-clause "requires" constraint-logical-or-expression 634 requires-clause-opt %empty ["{"] 635 | requires-clause "requires" shift, and go to state 399 $default reduce using rule 634 (requires-clause-opt) requires-clause go to state 718 requires-clause-opt go to state 1194

State 1106

133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 193 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->"] 194 | decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 388 lambda-declarator lambda-specifiers 389 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 391 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 393 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "(" shift, and go to state 555 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 193 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 557 decl-specifier-seq-opt go to state 558 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 lambda-declarator go to state 1195 lambda-specifiers go to state 560 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1107

489 noexcept-specifier"noexcept" "(" constant-expression ")" ")" shift, and go to state 1196

State 1108

716 trailing-return-type-opttrailing-return-type $default reduce using rule 716 (trailing-return-type-opt)

State 1109

393 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 393 (lambda-specifiers)

State 1110

456 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" "=" shift, and go to state 338

State 1111

139 class-nameIDENTIFIER ["::"] 248 enum-nameIDENTIFIER ["::"] 380 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 455 namespace-aliasIDENTIFIER ["::"] 461 namespace-nameIDENTIFIER ["::"] 708 template-nameIDENTIFIER ["<"] 743 typedef-nameIDENTIFIER ["::"] 767 unqualified-idIDENTIFIER [",", "+", "-", "=", ";", "(", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "<=>", "?", "&&", "||", "->", ".", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "++", "--"] ":" shift, and go to state 1197 "::" reduce using rule 139 (class-name) "::" [reduce using rule 248 (enum-name)] "::" [reduce using rule 455 (namespace-alias)] "::" [reduce using rule 461 (namespace-name)] "::" [reduce using rule 743 (typedef-name)] "<" reduce using rule 708 (template-name) "<" [reduce using rule 767 (unqualified-id)] $default reduce using rule 767 (unqualified-id)

State 1112

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 124 capture simple-capture 125 | init-capture 126 capture-default "&" 127 | "=" 128 capture-list capture 129 | capture-list "," capture 349 init-capture ELLIPSIS-opt IDENTIFIER initializer 350 | "&" ELLIPSIS-opt IDENTIFIER initializer 383 lambda-capture capture-default 384 | capture-list 385 | capture-default "," capture-list 386 lambda-capture-opt %empty ["]"] 387 | lambda-capture 392 lambda-introducer"[" lambda-capture-opt "]" 648 simple-capture IDENTIFIER ELLIPSIS-opt 649 | "&" IDENTIFIER ELLIPSIS-opt 650 | "this" 651 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 461 "this" shift, and go to state 462 "=" shift, and go to state 463 "&" shift, and go to state 464 "[" shift, and go to state 351 "*" shift, and go to state 465 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 386 (lambda-capture-opt) ELLIPSIS-opt go to state 466 capture go to state 467 capture-default go to state 468 capture-list go to state 469 init-capture go to state 470 lambda-capture go to state 471 lambda-capture-opt go to state 472 simple-capture go to state 473

State 1113

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 173 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 275 expr-or-braced-init-list expression 276 | braced-init-list 277 expr-or-braced-init-list-opt %empty [";"] 278 | expr-or-braced-init-list 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ";" reduce using rule 277 (expr-or-braced-init-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 1198 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expr-or-braced-init-list go to state 1199 expr-or-braced-init-list-opt go to state 1200 expression go to state 1201 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1114

382 labeled-statementattribute-specifier-seq-opt "default" ":" statement ":" shift, and go to state 1202

State 1115

151 compound-statement "{" statement-seq-opt "}" 719 try-block"try" compound-statement handler-seq "{" shift, and go to state 813 compound-statement go to state 1203

State 1116

371 iteration-statement"while" "(" condition ")" statement "(" shift, and go to state 1204

State 1117

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 372 iteration-statement"do" statement "while" "(" expression ")" ";" 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1205 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1118

373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 374 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement "(" shift, and go to state 1206

State 1119

375 jump-statement"break" ";" ";" shift, and go to state 1207

State 1120

376 jump-statement"continue" ";" ";" shift, and go to state 1208

State 1121

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 275 expr-or-braced-init-list expression 276 | braced-init-list 277 expr-or-braced-init-list-opt %empty [";"] 278 | expr-or-braced-init-list 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 377 jump-statement"return" expr-or-braced-init-list-opt ";" 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ";" reduce using rule 277 (expr-or-braced-init-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 1198 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expr-or-braced-init-list go to state 1199 expr-or-braced-init-list-opt go to state 1209 expression go to state 1201 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1122

379 jump-statement"goto" IDENTIFIER ";" IDENTIFIER shift, and go to state 1210

State 1123

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 381 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 1211 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 1124

3 CONSTEXPR-opt %empty ["("] 4 | "constexpr" 17 NOT-opt %empty ["consteval"] 18 | "!" 640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 642 | "if" NOT-opt "consteval" compound-statement 643 | "if" NOT-opt "consteval" compound-statement "else" statement "constexpr" shift, and go to state 1212 "!" shift, and go to state 1213 "consteval" reduce using rule 17 (NOT-opt) $default reduce using rule 3 (CONSTEXPR-opt) CONSTEXPR-opt go to state 1214 NOT-opt go to state 1215

State 1125

644 selection-statement"switch" "(" init-statement-opt condition ")" statement "(" shift, and go to state 1216

State 1126

678 statementattribute-specifier-seq-opt compound-statement $default reduce using rule 678 (statement)

State 1127

378 jump-statementcoroutine-return-statement $default reduce using rule 378 (jump-statement)

State 1128

614 ref-qualifier "&" 615 | "&&" 616 ref-qualifier-opt %empty ["["] 617 | ref-qualifier 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "&" shift, and go to state 357 "&&" shift, and go to state 358 $default reduce using rule 616 (ref-qualifier-opt) ref-qualifier go to state 359 ref-qualifier-opt go to state 360

State 1129

280 expressionexpression "," assignment-expression 285 expression-optexpression [";", ")", "]"] "," shift, and go to state 552 $default reduce using rule 285 (expression-opt)

State 1130

286 expression-statementexpression-opt ";" ";" shift, and go to state 1217

State 1131

677 statementattribute-specifier-seq-opt expression-statement $default reduce using rule 677 (statement)

State 1132

680 statementattribute-specifier-seq-opt iteration-statement $default reduce using rule 680 (statement)

State 1133

681 statementattribute-specifier-seq-opt jump-statement $default reduce using rule 681 (statement)

State 1134

679 statementattribute-specifier-seq-opt selection-statement $default reduce using rule 679 (statement)

State 1135

683 statementattribute-specifier-seq-opt try-block $default reduce using rule 683 (statement)

State 1136

685 statement-seqstatement-seq statement $default reduce using rule 685 (statement-seq)

State 1137

151 compound-statement"{" statement-seq-opt "}" $default reduce using rule 151 (compound-statement)

State 1138

159 conditional-expressionlogical-or-expression "?" expression ":" assignment-expression $default reduce using rule 159 (conditional-expression)

State 1139

471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "}" shift, and go to state 1218

State 1140

689 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" $default reduce using rule 689 (static_assert-declaration)

State 1141

454 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" $default reduce using rule 454 (named-namespace-definition)

State 1142

75 attribute-listattribute-list "," attribute "..." 78 attribute-optattribute [",", "]"] "..." shift, and go to state 1219 $default reduce using rule 78 (attribute-opt)

State 1143

73 attribute-listattribute-list "," attribute-opt $default reduce using rule 73 (attribute-list)

State 1144

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" $default reduce using rule 80 (attribute-specifier)

State 1145

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER $default reduce using rule 79 (attribute-scoped-token)

State 1146

91 balanced-token "(" balanced-token-seq-opt ")" 91 | "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty [")"] 98 | balanced-token-seq "(" shift, and go to state 1146 "[" shift, and go to state 1147 "{" shift, and go to state 1148 BALANCED_TOKEN shift, and go to state 1149 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1150 balanced-token-seq go to state 1151 balanced-token-seq-opt go to state 1220

State 1147

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty ["]"] 98 | balanced-token-seq "(" shift, and go to state 1146 "[" shift, and go to state 1147 "{" shift, and go to state 1148 BALANCED_TOKEN shift, and go to state 1149 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1150 balanced-token-seq go to state 1151 balanced-token-seq-opt go to state 1221

State 1148

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty ["}"] 98 | balanced-token-seq "(" shift, and go to state 1146 "[" shift, and go to state 1147 "{" shift, and go to state 1148 BALANCED_TOKEN shift, and go to state 1149 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1150 balanced-token-seq go to state 1151 balanced-token-seq-opt go to state 1222

State 1149

94 balanced-tokenBALANCED_TOKEN $default reduce using rule 94 (balanced-token)

State 1150

95 balanced-token-seqbalanced-token $default reduce using rule 95 (balanced-token-seq)

State 1151

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 96 balanced-token-seqbalanced-token-seq balanced-token 98 balanced-token-seq-optbalanced-token-seq [")", "]", "}"] "(" shift, and go to state 1146 "[" shift, and go to state 1147 "{" shift, and go to state 1148 BALANCED_TOKEN shift, and go to state 1149 $default reduce using rule 98 (balanced-token-seq-opt) balanced-token go to state 1223

State 1152

68 attribute-argument-clause"(" balanced-token-seq-opt ")" ")" shift, and go to state 1224

State 1153

346 identifier-listidentifier-list "," IDENTIFIER $default reduce using rule 346 (identifier-list)

State 1154

654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" ";" shift, and go to state 1225

State 1155

329 function-body"=" "delete" ";" $default reduce using rule 329 (function-body)

State 1156

328 function-body"=" "default" ";" $default reduce using rule 328 (function-body)

State 1157

413 mem-initializer-listmem-initializer ELLIPSIS-opt $default reduce using rule 413 (mem-initializer-list)

State 1158

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 281 expression-list initializer-list 282 expression-list-opt %empty [")"] 283 | expression-list 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 364 initializer-clause assignment-expression 365 | braced-init-list 366 initializer-list initializer-clause ELLIPSIS-opt 367 | initializer-list "," initializer-clause ELLIPSIS-opt 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 409 mem-initializermem-initializer-id "(" expression-list-opt ")" 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-list-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 662 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 663 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression-list go to state 829 expression-list-opt go to state 1226 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 initializer-clause go to state 666 initializer-list go to state 667 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1159

410 mem-initializermem-initializer-id braced-init-list $default reduce using rule 410 (mem-initializer)

State 1160

139 class-name IDENTIFIER 140 | simple-template-id 141 class-or-decltype nested-name-specifier-opt type-name 142 | nested-name-specifier "template" simple-template-id 143 | decltype-specifier 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 409 mem-initializer mem-initializer-id "(" expression-list-opt ")" 410 | mem-initializer-id braced-init-list 411 mem-initializer-id class-or-decltype 412 | IDENTIFIER 414 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 1029 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1030 decltype-specifier go to state 893 enum-name go to state 71 mem-initializer go to state 1227 mem-initializer-id go to state 1032 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 894 nested-name-specifier-opt go to state 895 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1161

334 function-try-block"try" ctor-initializer-opt compound-statement handler-seq 338 handler "catch" "(" exception-declaration ")" compound-statement 339 handler-seq handler handler-seq-opt "catch" shift, and go to state 1228 handler go to state 1229 handler-seq go to state 1230

State 1162

489 noexcept-specifier "noexcept" "(" constant-expression ")" 490 | "noexcept" 491 noexcept-specifier-opt %empty [",", "...", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] 492 | noexcept-specifier 564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "noexcept" shift, and go to state 810 $default reduce using rule 491 (noexcept-specifier-opt) noexcept-specifier go to state 811 noexcept-specifier-opt go to state 1231

State 1163

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 429 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 1232 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 1164

328 function-body"=" "default" ";" 329 | "=" "delete" ";" 609 pure-specifier"=" INTEGER_LITERAL "delete" shift, and go to state 1027 "default" shift, and go to state 1028 INTEGER_LITERAL shift, and go to state 1233

State 1165

611 pure-specifier-optpure-specifier $default reduce using rule 611 (pure-specifier-opt)

State 1166

426 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt $default reduce using rule 426 (member-declarator)

State 1167

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 119 brace-or-equal-initializer-opt %empty [",", ";"] 120 | brace-or-equal-initializer 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 426 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 427 | declarator requires-clause 428 | declarator brace-or-equal-initializer-opt 633 requires-clause "requires" constraint-logical-or-expression 788 virt-specifier "override" 789 | "final" 790 virt-specifier-seq virt-specifier 791 | virt-specifier-seq virt-specifier 792 virt-specifier-seq-opt %empty [",", "=", ";"] 793 | virt-specifier-seq "=" shift, and go to state 396 "{" shift, and go to state 398 "final" shift, and go to state 632 "requires" shift, and go to state 399 "override" shift, and go to state 633 "," reduce using rule 119 (brace-or-equal-initializer-opt) "," [reduce using rule 792 (virt-specifier-seq-opt)] "=" [reduce using rule 792 (virt-specifier-seq-opt)] ";" reduce using rule 119 (brace-or-equal-initializer-opt) ";" [reduce using rule 792 (virt-specifier-seq-opt)] $default reduce using rule 119 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1041 brace-or-equal-initializer-opt go to state 1042 braced-init-list go to state 401 requires-clause go to state 1234 virt-specifier go to state 635 virt-specifier-seq go to state 636 virt-specifier-seq-opt go to state 1235

State 1168

431 member-declarator-listmember-declarator-list "," member-declarator $default reduce using rule 431 (member-declarator-list)

State 1169

103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype $default reduce using rule 103 (base-specifier)

State 1170

104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype $default reduce using rule 104 (base-specifier)

State 1171

142 class-or-decltypenested-name-specifier "template" simple-template-id $default reduce using rule 142 (class-or-decltype)

State 1172

106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 106 (base-specifier-list)

State 1173

367 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt $default reduce using rule 367 (initializer-list)

State 1174

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" ";" shift, and go to state 1236

State 1175

438 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" $default reduce using rule 438 (module-declaration)

State 1176

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 195 declaration block-declaration 196 | nodeclspec-function-declaration 197 | function-definition 198 | template-declaration 199 | deduction-guide 200 | explicit-instantiation 201 | explicit-specialization 202 | export-declaration 203 | linkage-specification 204 | namespace-definition 205 | empty-declaration 206 | attribute-declaration 207 | module-import-declaration 208 declaration-seq declaration 209 | declaration-seq declaration 210 declaration-seq-opt %empty [$end] 211 | declaration-seq 216 decltype-specifier "decltype" "(" expression ")" 217 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 235 empty-declaration ";" 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 266 explicit-instantiation EXTERN-opt "template" declaration 267 explicit-specialization "template" "<" ">" declaration 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 270 explicit-specifier-opt %empty [IDENTIFIER] 271 | explicit-specifier 272 export-declaration "export" declaration 273 | "export" "{" declaration-seq-opt "}" 274 | "export" module-import-declaration 330 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 332 function-specifier "virtual" 333 | explicit-specifier 394 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 395 | "extern" string-literal declaration 439 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 440 | "import" module-partition attribute-specifier-seq-opt ";" 441 | "import" header-name attribute-specifier-seq-opt ";" 454 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 458 namespace-definition named-namespace-definition 459 | unnamed-namespace-definition 460 | nested-namespace-definition 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 471 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 487 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 596 private-module-fragment"module" ":" "private" ";" declaration-seq-opt 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 702 template-declaration template-head declaration 703 | template-head concept-definition 704 template-head "template" "<" template-parameter-list ">" requires-clause-opt 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 766 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 210 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 270 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 1237 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1177

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 494 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1238

State 1178

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 499 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1239

State 1179

557 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause $default reduce using rule 557 (parameter-declaration)

State 1180

555 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause $default reduce using rule 555 (parameter-declaration)

State 1181

290 fold-expression"(" cast-expression fold-operator "..." fold-operator cast-expression ")" ")" shift, and go to state 1240

State 1182

736 type-requirement"typename" nested-name-specifier-opt type-name ";" ";" shift, and go to state 1241

State 1183

15 NOEXCEPT-opt %empty [";", "->"] 16 | "noexcept" 150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" "noexcept" shift, and go to state 1242 $default reduce using rule 15 (NOEXCEPT-opt) NOEXCEPT-opt go to state 1243

State 1184

472 nested-requirement"requires" constraint-expression ";" $default reduce using rule 472 (nested-requirement)

State 1185

280 expressionexpression "," assignment-expression 582 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 1244

State 1186

280 expressionexpression "," assignment-expression 583 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 1245

State 1187

280 expressionexpression "," assignment-expression 584 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 1246

State 1188

280 expressionexpression "," assignment-expression 585 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 552 ")" shift, and go to state 1247

State 1189

121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 478 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 479 new-initializer "(" expression-list-opt ")" 480 | braced-init-list 481 new-initializer-opt %empty [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 482 | new-initializer "(" shift, and go to state 1096 "{" shift, and go to state 398 "{" [reduce using rule 481 (new-initializer-opt)] $default reduce using rule 481 (new-initializer-opt) braced-init-list go to state 1097 new-initializer go to state 1098 new-initializer-opt go to state 1248

State 1190

479 new-initializer"(" expression-list-opt ")" ")" shift, and go to state 1249

State 1191

505 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1250

State 1192

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 160 constant-expression conditional-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 506 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 327 constant-expression go to state 1251 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 329 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324

State 1193

473 new-declaratorptr-operator new-declarator-opt $default reduce using rule 473 (new-declarator)

State 1194

389 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt $default reduce using rule 389 (lambda-declarator)

State 1195

151 compound-statement "{" statement-seq-opt "}" 391 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement "{" shift, and go to state 813 compound-statement go to state 1252

State 1196

489 noexcept-specifier"noexcept" "(" constant-expression ")" $default reduce using rule 489 (noexcept-specifier)

State 1197

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 380 | attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1253 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1198

276 expr-or-braced-init-listbraced-init-list $default reduce using rule 276 (expr-or-braced-init-list)

State 1199

278 expr-or-braced-init-list-optexpr-or-braced-init-list $default reduce using rule 278 (expr-or-braced-init-list-opt)

State 1200

173 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" ";" shift, and go to state 1254

State 1201

275 expr-or-braced-init-listexpression [";", ")"] 280 expressionexpression "," assignment-expression "," shift, and go to state 552 $default reduce using rule 275 (expr-or-braced-init-list)

State 1202

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1255 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1203

338 handler "catch" "(" exception-declaration ")" compound-statement 339 handler-seq handler handler-seq-opt 719 try-block"try" compound-statement handler-seq "catch" shift, and go to state 1228 handler go to state 1229 handler-seq go to state 1256

State 1204

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 154 condition expression 155 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 371 iteration-statement"while" "(" condition ")" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1257 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 condition go to state 1258 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1259 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1205

372 iteration-statement"do" statement "while" "(" expression ")" ";" "while" shift, and go to state 1260

State 1206

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 279 expression assignment-expression 280 | expression "," assignment-expression 284 expression-opt %empty [";"] 285 | expression 286 expression-statement expression-opt ";" 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 332 function-specifier "virtual" 333 | explicit-specifier 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 357 init-statement expression-statement 358 | simple-declaration 359 | alias-declaration 360 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 361 | init-statement 370 integer-literal INTEGER_LITERAL 373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 374 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 238 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 1261 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 360 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 360 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 360 (init-statement-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 360 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 360 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 360 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 360 (init-statement-opt)] ";" reduce using rule 284 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 360 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 360 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 360 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 360 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 360 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 360 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 360 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 360 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 360 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 360 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 360 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 360 (init-statement-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 360 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 360 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 360 (init-statement-opt)] "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 360 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 360 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 360 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 360 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 360 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 360 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 360 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 360 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 360 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 360 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 360 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 360 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 360 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 360 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 360 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 360 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 360 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 alias-declaration go to state 1262 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 1263 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 284 exclusive-or-expression go to state 285 explicit-specifier go to state 155 expression go to state 1129 expression-opt go to state 1130 expression-statement go to state 1264 floating-point-literal go to state 287 fold-expression go to state 288 function-specifier go to state 79 id-expression go to state 289 inclusive-or-expression go to state 290 init-statement go to state 1265 init-statement-opt go to state 1266 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-declaration go to state 1267 simple-template-id go to state 311 simple-type-specifier go to state 427 storage-class-specifier go to state 99 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1207

375 jump-statement"break" ";" $default reduce using rule 375 (jump-statement)

State 1208

376 jump-statement"continue" ";" $default reduce using rule 376 (jump-statement)

State 1209

377 jump-statement"return" expr-or-braced-init-list-opt ";" ";" shift, and go to state 1268

State 1210

379 jump-statement"goto" IDENTIFIER ";" ";" shift, and go to state 1269

State 1211

381 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement ":" shift, and go to state 1270

State 1212

4 CONSTEXPR-opt"constexpr" $default reduce using rule 4 (CONSTEXPR-opt)

State 1213

18 NOT-opt"!" $default reduce using rule 18 (NOT-opt)

State 1214

640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement "(" shift, and go to state 1271

State 1215

642 selection-statement"if" NOT-opt "consteval" compound-statement 643 | "if" NOT-opt "consteval" compound-statement "else" statement "consteval" shift, and go to state 1272

State 1216

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 279 expression assignment-expression 280 | expression "," assignment-expression 284 expression-opt %empty [";"] 285 | expression 286 expression-statement expression-opt ";" 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 332 function-specifier "virtual" 333 | explicit-specifier 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 357 init-statement expression-statement 358 | simple-declaration 359 | alias-declaration 360 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "alignas", "(", "&", "[", "co_await", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", INTEGER_LITERAL, "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 361 | init-statement 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 selection-statement"switch" "(" init-statement-opt condition ")" statement 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 238 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 1261 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 360 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 360 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 360 (init-statement-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 360 (init-statement-opt)] "noexcept" [reduce using rule 360 (init-statement-opt)] "!" [reduce using rule 360 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 360 (init-statement-opt)] "this" [reduce using rule 360 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 360 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 360 (init-statement-opt)] "+" [reduce using rule 360 (init-statement-opt)] "-" [reduce using rule 360 (init-statement-opt)] ";" reduce using rule 284 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 360 (init-statement-opt)] "(" [reduce using rule 360 (init-statement-opt)] "&" [reduce using rule 360 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 360 (init-statement-opt)] "co_await" [reduce using rule 360 (init-statement-opt)] BOOLEAN_LITERAL [reduce using rule 360 (init-statement-opt)] CHARACTER_LITERAL [reduce using rule 360 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 360 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 360 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 360 (init-statement-opt)] "operator" [reduce using rule 360 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 360 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 360 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 360 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 360 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 360 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 360 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 360 (init-statement-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "delete" [reduce using rule 360 (init-statement-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 360 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 360 (init-statement-opt)] FLOATING_POINT_LITERAL [reduce using rule 360 (init-statement-opt)] "*" [reduce using rule 360 (init-statement-opt)] INTEGER_LITERAL [reduce using rule 360 (init-statement-opt)] "requires" [reduce using rule 360 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "new" [reduce using rule 360 (init-statement-opt)] "~" [reduce using rule 360 (init-statement-opt)] "++" [reduce using rule 360 (init-statement-opt)] "--" [reduce using rule 360 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 360 (init-statement-opt)] "auto" [reduce using rule 722 (type-constraint-opt)] POINTER_LITERAL [reduce using rule 360 (init-statement-opt)] "dynamic_cast" [reduce using rule 360 (init-statement-opt)] "static_cast" [reduce using rule 360 (init-statement-opt)] "reinterpret_cast" [reduce using rule 360 (init-statement-opt)] "const_cast" [reduce using rule 360 (init-statement-opt)] "typeid" [reduce using rule 360 (init-statement-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 360 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 360 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 360 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 360 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 360 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 360 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 360 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 360 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 360 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 360 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 360 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 360 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 360 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 360 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 360 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 360 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 360 (init-statement-opt)] STRING_LITERAL [reduce using rule 360 (init-statement-opt)] "throw" [reduce using rule 360 (init-statement-opt)] "sizeof" [reduce using rule 360 (init-statement-opt)] "alignof" [reduce using rule 360 (init-statement-opt)] USER_DEFINED_CHARACTER_LITERAL [reduce using rule 360 (init-statement-opt)] USER_DEFINED_FLOATING_POINT_LITERAL [reduce using rule 360 (init-statement-opt)] USER_DEFINED_INTEGER_LITERAL [reduce using rule 360 (init-statement-opt)] "co_yield" [reduce using rule 360 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 alias-declaration go to state 1262 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 1263 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 284 exclusive-or-expression go to state 285 explicit-specifier go to state 155 expression go to state 1129 expression-opt go to state 1130 expression-statement go to state 1264 floating-point-literal go to state 287 fold-expression go to state 288 function-specifier go to state 79 id-expression go to state 289 inclusive-or-expression go to state 290 init-statement go to state 1273 init-statement-opt go to state 1274 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-declaration go to state 1267 simple-template-id go to state 311 simple-type-specifier go to state 427 storage-class-specifier go to state 99 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1217

286 expression-statementexpression-opt ";" $default reduce using rule 286 (expression-statement)

State 1218

471 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" $default reduce using rule 471 (nested-namespace-definition)

State 1219

75 attribute-listattribute-list "," attribute "..." $default reduce using rule 75 (attribute-list)

State 1220

91 balanced-token"(" balanced-token-seq-opt ")" ")" shift, and go to state 1275

State 1221

92 balanced-token"[" balanced-token-seq-opt "]" "]" shift, and go to state 1276

State 1222

93 balanced-token"{" balanced-token-seq-opt "}" "}" shift, and go to state 1277

State 1223

96 balanced-token-seqbalanced-token-seq balanced-token $default reduce using rule 96 (balanced-token-seq)

State 1224

68 attribute-argument-clause"(" balanced-token-seq-opt ")" $default reduce using rule 68 (attribute-argument-clause)

State 1225

654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" $default reduce using rule 654 (simple-declaration)

State 1226

409 mem-initializermem-initializer-id "(" expression-list-opt ")" ")" shift, and go to state 1278

State 1227

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 414 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1279

State 1228

338 handler"catch" "(" exception-declaration ")" compound-statement "(" shift, and go to state 1280

State 1229

338 handler "catch" "(" exception-declaration ")" compound-statement 339 handler-seq handler handler-seq-opt 339 | handler handler-seq-opt 340 handler-seq-opt %empty [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "template", "this", "typename", "virtual", "private", "protected", "public", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", ":", "co_await", "{", "}", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "&&", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", "module", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "import", "namespace", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 341 | handler-seq "catch" shift, and go to state 1228 $default reduce using rule 340 (handler-seq-opt) handler go to state 1229 handler-seq go to state 1281 handler-seq-opt go to state 1282

State 1230

334 function-try-block"try" ctor-initializer-opt compound-statement handler-seq $default reduce using rule 334 (function-try-block)

State 1231

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1283

State 1232

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 119 brace-or-equal-initializer-opt %empty [",", ";"] 120 | brace-or-equal-initializer 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 429 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt "=" shift, and go to state 396 "{" shift, and go to state 398 $default reduce using rule 119 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1041 brace-or-equal-initializer-opt go to state 1284 braced-init-list go to state 401

State 1233

609 pure-specifier"=" INTEGER_LITERAL $default reduce using rule 609 (pure-specifier)

State 1234

427 member-declaratordeclarator requires-clause $default reduce using rule 427 (member-declarator)

State 1235

426 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 609 pure-specifier "=" INTEGER_LITERAL 610 pure-specifier-opt %empty [",", ";"] 611 | pure-specifier "=" shift, and go to state 1285 $default reduce using rule 610 (pure-specifier-opt) pure-specifier go to state 1165 pure-specifier-opt go to state 1166

State 1236

217 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" $default reduce using rule 217 (deduction-guide)

State 1237

596 private-module-fragment"module" ":" "private" ";" declaration-seq-opt $default reduce using rule 596 (private-module-fragment)

State 1238

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 494 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 494 (noptr-abstract-declarator)] $default reduce using rule 494 (noptr-abstract-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1239

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 499 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 499 (noptr-abstract-pack-declarator)] $default reduce using rule 499 (noptr-abstract-pack-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1240

290 fold-expression"(" cast-expression fold-operator "..." fold-operator cast-expression ")" $default reduce using rule 290 (fold-expression)

State 1241

736 type-requirement"typename" nested-name-specifier-opt type-name ";" $default reduce using rule 736 (type-requirement)

State 1242

16 NOEXCEPT-opt"noexcept" $default reduce using rule 16 (NOEXCEPT-opt)

State 1243

150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 637 return-type-requirement "->" type-constraint 638 return-type-requirement-opt %empty [";"] 639 | return-type-requirement "->" shift, and go to state 1286 $default reduce using rule 638 (return-type-requirement-opt) return-type-requirement go to state 1287 return-type-requirement-opt go to state 1288

State 1244

582 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 582 (postfix-expression)

State 1245

583 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 583 (postfix-expression)

State 1246

584 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 584 (postfix-expression)

State 1247

585 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 585 (postfix-expression)

State 1248

478 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt $default reduce using rule 478 (new-expression)

State 1249

479 new-initializer"(" expression-list-opt ")" $default reduce using rule 479 (new-initializer)

State 1250

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 505 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1289

State 1251

506 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt "]" shift, and go to state 1290

State 1252

391 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement $default reduce using rule 391 (lambda-expression)

State 1253

380 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement $default reduce using rule 380 (labeled-statement)

State 1254

173 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" $default reduce using rule 173 (coroutine-return-statement)

State 1255

382 labeled-statementattribute-specifier-seq-opt "default" ":" statement $default reduce using rule 382 (labeled-statement)

State 1256

719 try-block"try" compound-statement handler-seq $default reduce using rule 719 (try-block)

State 1257

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 155 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1291 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1258

371 iteration-statement"while" "(" condition ")" statement ")" shift, and go to state 1292

State 1259

154 conditionexpression [";", ")"] 280 expressionexpression "," assignment-expression "," shift, and go to state 552 $default reduce using rule 154 (condition)

State 1260

372 iteration-statement"do" statement "while" "(" expression ")" ";" "(" shift, and go to state 1293

State 1261

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" IDENTIFIER shift, and go to state 123

State 1262

359 init-statementalias-declaration $default reduce using rule 359 (init-statement)

State 1263

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 654 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1128 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1264

357 init-statementexpression-statement $default reduce using rule 357 (init-statement)

State 1265

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 154 condition expression 155 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 condition-opt %empty [";"] 157 | condition 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 361 init-statement-optinit-statement ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 370 integer-literal INTEGER_LITERAL 373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 "constexpr" reduce using rule 83 (attribute-specifier-seq-opt) "constexpr" [reduce using rule 361 (init-statement-opt)] "extern" reduce using rule 83 (attribute-specifier-seq-opt) "extern" [reduce using rule 361 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 361 (init-statement-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" reduce using rule 83 (attribute-specifier-seq-opt) "inline" [reduce using rule 361 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 361 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 361 (init-statement-opt)] "virtual" reduce using rule 83 (attribute-specifier-seq-opt) "virtual" [reduce using rule 361 (init-statement-opt)] ";" reduce using rule 156 (condition-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 361 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 361 (init-statement-opt)] "class" reduce using rule 83 (attribute-specifier-seq-opt) "class" [reduce using rule 361 (init-statement-opt)] "struct" reduce using rule 83 (attribute-specifier-seq-opt) "struct" [reduce using rule 361 (init-statement-opt)] "union" reduce using rule 83 (attribute-specifier-seq-opt) "union" [reduce using rule 361 (init-statement-opt)] "const" reduce using rule 83 (attribute-specifier-seq-opt) "const" [reduce using rule 361 (init-statement-opt)] "volatile" reduce using rule 83 (attribute-specifier-seq-opt) "volatile" [reduce using rule 361 (init-statement-opt)] "friend" reduce using rule 83 (attribute-specifier-seq-opt) "friend" [reduce using rule 361 (init-statement-opt)] "typedef" reduce using rule 83 (attribute-specifier-seq-opt) "typedef" [reduce using rule 361 (init-statement-opt)] "consteval" reduce using rule 83 (attribute-specifier-seq-opt) "consteval" [reduce using rule 361 (init-statement-opt)] "constinit" reduce using rule 83 (attribute-specifier-seq-opt) "constinit" [reduce using rule 361 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 361 (init-statement-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "enum" reduce using rule 83 (attribute-specifier-seq-opt) "enum" [reduce using rule 361 (init-statement-opt)] "explicit" reduce using rule 83 (attribute-specifier-seq-opt) "explicit" [reduce using rule 361 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 361 (init-statement-opt)] "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 361 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 361 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 361 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 361 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 361 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 361 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 361 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 361 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 361 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 361 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 361 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 361 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 361 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 361 (init-statement-opt)] "static" reduce using rule 83 (attribute-specifier-seq-opt) "static" [reduce using rule 361 (init-statement-opt)] "thread_local" reduce using rule 83 (attribute-specifier-seq-opt) "thread_local" [reduce using rule 361 (init-statement-opt)] "mutable" reduce using rule 83 (attribute-specifier-seq-opt) "mutable" [reduce using rule 361 (init-statement-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1257 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 condition go to state 1294 condition-opt go to state 1295 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1259 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1266

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 323 for-range-declaration attribute-specifier-seq-opt decl-specifier-seq declarator 324 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 374 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1296 for-range-declaration go to state 1297

State 1267

358 init-statementsimple-declaration $default reduce using rule 358 (init-statement)

State 1268

377 jump-statement"return" expr-or-braced-init-list-opt ";" $default reduce using rule 377 (jump-statement)

State 1269

379 jump-statement"goto" IDENTIFIER ";" $default reduce using rule 379 (jump-statement)

State 1270

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1298 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1271

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 279 expression assignment-expression 280 | expression "," assignment-expression 284 expression-opt %empty [";"] 285 | expression 286 expression-statement expression-opt ";" 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 332 function-specifier "virtual" 333 | explicit-specifier 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 357 init-statement expression-statement 358 | simple-declaration 359 | alias-declaration 360 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "alignas", "(", "&", "[", "co_await", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", INTEGER_LITERAL, "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 361 | init-statement 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 238 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 1261 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 251 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 360 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 360 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 360 (init-statement-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 360 (init-statement-opt)] "noexcept" [reduce using rule 360 (init-statement-opt)] "!" [reduce using rule 360 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 360 (init-statement-opt)] "this" [reduce using rule 360 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 360 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 360 (init-statement-opt)] "+" [reduce using rule 360 (init-statement-opt)] "-" [reduce using rule 360 (init-statement-opt)] ";" reduce using rule 284 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 360 (init-statement-opt)] "(" [reduce using rule 360 (init-statement-opt)] "&" [reduce using rule 360 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 360 (init-statement-opt)] "co_await" [reduce using rule 360 (init-statement-opt)] BOOLEAN_LITERAL [reduce using rule 360 (init-statement-opt)] CHARACTER_LITERAL [reduce using rule 360 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 360 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 360 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 360 (init-statement-opt)] "operator" [reduce using rule 360 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 360 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 360 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 360 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 360 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 360 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 360 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 360 (init-statement-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "delete" [reduce using rule 360 (init-statement-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 360 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 360 (init-statement-opt)] FLOATING_POINT_LITERAL [reduce using rule 360 (init-statement-opt)] "*" [reduce using rule 360 (init-statement-opt)] INTEGER_LITERAL [reduce using rule 360 (init-statement-opt)] "requires" [reduce using rule 360 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "new" [reduce using rule 360 (init-statement-opt)] "~" [reduce using rule 360 (init-statement-opt)] "++" [reduce using rule 360 (init-statement-opt)] "--" [reduce using rule 360 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 360 (init-statement-opt)] "auto" [reduce using rule 722 (type-constraint-opt)] POINTER_LITERAL [reduce using rule 360 (init-statement-opt)] "dynamic_cast" [reduce using rule 360 (init-statement-opt)] "static_cast" [reduce using rule 360 (init-statement-opt)] "reinterpret_cast" [reduce using rule 360 (init-statement-opt)] "const_cast" [reduce using rule 360 (init-statement-opt)] "typeid" [reduce using rule 360 (init-statement-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 360 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 360 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 360 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 360 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 360 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 360 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 360 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 360 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 360 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 360 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 360 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 360 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 360 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 360 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 360 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 360 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 360 (init-statement-opt)] STRING_LITERAL [reduce using rule 360 (init-statement-opt)] "throw" [reduce using rule 360 (init-statement-opt)] "sizeof" [reduce using rule 360 (init-statement-opt)] "alignof" [reduce using rule 360 (init-statement-opt)] USER_DEFINED_CHARACTER_LITERAL [reduce using rule 360 (init-statement-opt)] USER_DEFINED_FLOATING_POINT_LITERAL [reduce using rule 360 (init-statement-opt)] USER_DEFINED_INTEGER_LITERAL [reduce using rule 360 (init-statement-opt)] "co_yield" [reduce using rule 360 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 alias-declaration go to state 1262 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 1263 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 283 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 284 exclusive-or-expression go to state 285 explicit-specifier go to state 155 expression go to state 1129 expression-opt go to state 1130 expression-statement go to state 1264 floating-point-literal go to state 287 fold-expression go to state 288 function-specifier go to state 79 id-expression go to state 289 inclusive-or-expression go to state 290 init-statement go to state 1273 init-statement-opt go to state 1299 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-declaration go to state 1267 simple-template-id go to state 311 simple-type-specifier go to state 427 storage-class-specifier go to state 99 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 434 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1272

151 compound-statement "{" statement-seq-opt "}" 642 selection-statement"if" NOT-opt "consteval" compound-statement 643 | "if" NOT-opt "consteval" compound-statement "else" statement "{" shift, and go to state 813 compound-statement go to state 1300

State 1273

361 init-statement-optinit-statement $default reduce using rule 361 (init-statement-opt)

State 1274

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 154 condition expression 155 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 selection-statement"switch" "(" init-statement-opt condition ")" statement 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1257 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 condition go to state 1301 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1259 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1275

91 balanced-token"(" balanced-token-seq-opt ")" $default reduce using rule 91 (balanced-token)

State 1276

92 balanced-token"[" balanced-token-seq-opt "]" $default reduce using rule 92 (balanced-token)

State 1277

93 balanced-token"{" balanced-token-seq-opt "}" $default reduce using rule 93 (balanced-token)

State 1278

409 mem-initializermem-initializer-id "(" expression-list-opt ")" $default reduce using rule 409 (mem-initializer)

State 1279

414 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt $default reduce using rule 414 (mem-initializer-list)

State 1280

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "typename", "alignas", "[", "class", "struct", "union", "const", "volatile", "decltype", "enum", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void"] 84 | attribute-specifier-seq 261 exception-declaration attribute-specifier-seq-opt type-specifier-seq declarator 262 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 263 | "..." 338 handler"catch" "(" exception-declaration ")" compound-statement "..." shift, and go to state 1302 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1303 exception-declaration go to state 1304

State 1281

341 handler-seq-opthandler-seq $default reduce using rule 341 (handler-seq-opt)

State 1282

339 handler-seqhandler handler-seq-opt $default reduce using rule 339 (handler-seq)

State 1283

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 564 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 564 (parameters-and-qualifiers)] $default reduce using rule 564 (parameters-and-qualifiers) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1284

429 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt $default reduce using rule 429 (member-declarator)

State 1285

609 pure-specifier"=" INTEGER_LITERAL INTEGER_LITERAL shift, and go to state 1233

State 1286

139 class-name IDENTIFIER 140 | simple-template-id 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 637 return-type-requirement"->" type-constraint 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 simple-template-id go to state 96 template-name go to state 102 type-constraint go to state 1305 type-name go to state 106 typedef-name go to state 108

State 1287

639 return-type-requirement-optreturn-type-requirement $default reduce using rule 639 (return-type-requirement-opt)

State 1288

150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" ";" shift, and go to state 1306

State 1289

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 505 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 505 (noptr-new-declarator)] $default reduce using rule 505 (noptr-new-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1290

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 506 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1307

State 1291

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 155 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 1308 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1292

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 371 iteration-statement"while" "(" condition ")" statement 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1309 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1293

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 372 iteration-statement"do" statement "while" "(" expression ")" ";" 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1310 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1294

157 condition-optcondition $default reduce using rule 157 (condition-opt)

State 1295

373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement ";" shift, and go to state 1311

State 1296

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 323 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 324 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 332 function-specifier "virtual" 333 | explicit-specifier 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1312 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1297

374 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement ":" shift, and go to state 1313

State 1298

381 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement $default reduce using rule 381 (labeled-statement)

State 1299

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 154 condition expression 155 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1257 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 condition go to state 1314 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1259 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1300

642 selection-statement"if" NOT-opt "consteval" compound-statement ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "}", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "namespace", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 643 | "if" NOT-opt "consteval" compound-statement "else" statement "else" shift, and go to state 1315 "else" [reduce using rule 642 (selection-statement)] $default reduce using rule 642 (selection-statement)

State 1301

644 selection-statement"switch" "(" init-statement-opt condition ")" statement ")" shift, and go to state 1316

State 1302

263 exception-declaration"..." $default reduce using rule 263 (exception-declaration)

State 1303

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 177 cv-qualifier "const" 178 | "volatile" 216 decltype-specifier "decltype" "(" expression ")" 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 248 enum-name IDENTIFIER 261 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 262 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 741 type-specifier-seq type-specifier attribute-specifier-seq-opt 742 | type-specifier type-specifier-seq 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] $default reduce using rule 722 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-key go to state 424 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 432 type-specifier-seq go to state 1317 typedef-name go to state 108 typename-specifier go to state 109

State 1304

338 handler"catch" "(" exception-declaration ")" compound-statement ")" shift, and go to state 1318

State 1305

637 return-type-requirement"->" type-constraint $default reduce using rule 637 (return-type-requirement)

State 1306

150 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" $default reduce using rule 150 (compound-requirement)

State 1307

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 506 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 506 (noptr-new-declarator)] $default reduce using rule 506 (noptr-new-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1308

117 brace-or-equal-initializer "=" initializer-clause 118 | braced-init-list 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 155 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer "=" shift, and go to state 396 "{" shift, and go to state 398 brace-or-equal-initializer go to state 1319 braced-init-list go to state 401

State 1309

371 iteration-statement"while" "(" condition ")" statement $default reduce using rule 371 (iteration-statement)

State 1310

280 expressionexpression "," assignment-expression 372 iteration-statement"do" statement "while" "(" expression ")" ";" "," shift, and go to state 552 ")" shift, and go to state 1320

State 1311

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 279 expression assignment-expression 280 | expression "," assignment-expression 284 expression-opt %empty [")"] 285 | expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] ")" reduce using rule 284 (expression-opt) "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expression go to state 1129 expression-opt go to state 1321 floating-point-literal go to state 287 fold-expression go to state 288 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1312

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 323 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 324 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 614 ref-qualifier "&" 615 | "&&" 616 ref-qualifier-opt %empty ["["] 617 | ref-qualifier 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 1322 "&&" shift, and go to state 1323 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "[" reduce using rule 616 (ref-qualifier-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 1324 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 ref-qualifier go to state 359 ref-qualifier-opt go to state 1325 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1313

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 boolean-literal BOOLEAN_LITERAL 121 braced-init-list "{" initializer-list COMMA-opt "}" 122 | "{" designated-initializer-list COMMA-opt "}" 123 | "{" "}" 130 cast-expression unary-expression 131 | "(" type-id ")" cast-expression 132 character-literal CHARACTER_LITERAL 139 class-name IDENTIFIER 140 | simple-template-id 148 compare-expression shift-expression 149 | compare-expression "<=>" shift-expression 158 conditional-expression logical-or-expression 159 | logical-or-expression "?" expression ":" assignment-expression 171 conversion-function-id "operator" conversion-type-id 216 decltype-specifier "decltype" "(" expression ")" 224 delete-expression SCOPE-opt "delete" cast-expression 225 | SCOPE-opt "delete" "[" "]" cast-expression 248 enum-name IDENTIFIER 258 equality-expression relational-expression 259 | equality-expression "==" relational-expression 260 | equality-expression "!=" relational-expression 264 exclusive-or-expression and-expression 265 | exclusive-or-expression "^" and-expression 275 expr-or-braced-init-list expression 276 | braced-init-list 279 expression assignment-expression 280 | expression "," assignment-expression 287 floating-point-literal FLOATING_POINT_LITERAL 288 fold-expression "(" cast-expression fold-operator "..." ")" 289 | "(" "..." fold-operator cast-expression ")" 290 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 325 for-range-initializer expr-or-braced-init-list 343 id-expression unqualified-id 344 | qualified-id 347 inclusive-or-expression exclusive-or-expression 348 | inclusive-or-expression "|" exclusive-or-expression 370 integer-literal INTEGER_LITERAL 374 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 390 lambda-expression lambda-introducer lambda-declarator compound-statement 391 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 392 lambda-introducer "[" lambda-capture-opt "]" 396 literal integer-literal 397 | character-literal 398 | floating-point-literal 399 | string-literal 400 | boolean-literal 401 | pointer-literal 402 | user-defined-literal 403 literal-operator-id "operator" string-literal IDENTIFIER 404 | "operator" user-defined-string-literal 405 logical-and-expression inclusive-or-expression 406 | logical-and-expression "&&" inclusive-or-expression 407 logical-or-expression logical-and-expression 408 | logical-or-expression "||" logical-and-expression 450 multiplicative-expression pm-expression 451 | multiplicative-expression "*" pm-expression 452 | multiplicative-expression "/" pm-expression 453 | multiplicative-expression "%" pm-expression 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 477 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 478 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 488 noexcept-expression "noexcept" "(" expression ")" 508 operator-function-id "operator" overloadable-operator 509 | "operator" overloadable-operator "<" template-argument-list-opt ">" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 567 pm-expression cast-expression 568 | pm-expression ".*" cast-expression 569 | pm-expression "->*" cast-expression 570 pointer-literal POINTER_LITERAL 571 postfix-expression primary-expression 572 | postfix-expression "[" expression-list-opt "]" 573 | postfix-expression "(" expression-list-opt ")" 574 | simple-type-specifier "(" expression-list-opt ")" 575 | typename-specifier "(" expression-list-opt ")" 576 | simple-type-specifier braced-init-list 577 | typename-specifier braced-init-list 578 | postfix-expression "." TEMPLATE-opt id-expression 579 | postfix-expression "->" TEMPLATE-opt id-expression 580 | postfix-expression "++" 581 | postfix-expression "--" 582 | "dynamic_cast" "<" type-id ">" "(" expression ")" 583 | "static_cast" "<" type-id ">" "(" expression ")" 584 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 585 | "const_cast" "<" type-id ">" "(" expression ")" 586 | "typeid" "(" expression ")" 587 | "typeid" "(" type-id ")" 588 primary-expression literal 589 | string-literal 590 | "this" 591 | "(" expression ")" 592 | id-expression 593 | lambda-expression 594 | fold-expression 595 | requires-expression 612 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 618 relational-expression compare-expression 619 | relational-expression "<" compare-expression 620 | relational-expression ">" compare-expression 621 | relational-expression "<=" compare-expression 622 | relational-expression ">=" compare-expression 636 requires-expression "requires" requirement-parameter-list-opt requirement-body 645 shift-expression additive-expression 646 | shift-expression "<<" additive-expression 647 | shift-expression ">>" additive-expression 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 694 string-literal STRING_LITERAL 705 template-id simple-template-id 706 | operator-function-id "<" template-argument-list-opt ">" 707 | literal-operator-id "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 713 throw-expression "throw" assignment-expression-opt 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 748 unary-expression postfix-expression 749 | unary-operator cast-expression 750 | "++" cast-expression 751 | "--" cast-expression 752 | await-expression 753 | "sizeof" unary-expression 754 | "sizeof" "(" type-id ")" 755 | "sizeof" "..." "(" IDENTIFIER ")" 756 | "alignof" "(" type-id ")" 757 | noexcept-expression 758 | new-expression 759 | delete-expression 760 unary-operator "*" 761 | "&" 762 | "+" 763 | "-" 764 | "!" 765 | "~" 767 unqualified-id IDENTIFIER 768 | operator-function-id 769 | conversion-function-id 770 | literal-operator-id 771 | "~" type-name 772 | "~" decltype-specifier 773 | template-id 774 user-defined-character-literal USER_DEFINED_CHARACTER_LITERAL 775 user-defined-floating-point-literal USER_DEFINED_FLOATING_POINT_LITERAL 776 user-defined-integer-literal USER_DEFINED_INTEGER_LITERAL 777 user-defined-literal user-defined-integer-literal 778 | user-defined-floating-point-literal 779 | user-defined-string-literal 780 | user-defined-character-literal 781 user-defined-string-literal string-literal ud-suffix 794 yield-expression "co_yield" assignment-expression 795 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 398 BOOLEAN_LITERAL shift, and go to state 249 CHARACTER_LITERAL shift, and go to state 250 "operator" shift, and go to state 251 "decltype" shift, and go to state 21 FLOATING_POINT_LITERAL shift, and go to state 252 "*" shift, and go to state 253 INTEGER_LITERAL shift, and go to state 254 "requires" shift, and go to state 255 "~" shift, and go to state 256 "++" shift, and go to state 257 "--" shift, and go to state 258 POINTER_LITERAL shift, and go to state 259 "dynamic_cast" shift, and go to state 260 "static_cast" shift, and go to state 261 "reinterpret_cast" shift, and go to state 262 "const_cast" shift, and go to state 263 "typeid" shift, and go to state 264 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 265 "sizeof" shift, and go to state 266 "alignof" shift, and go to state 267 USER_DEFINED_CHARACTER_LITERAL shift, and go to state 268 USER_DEFINED_FLOATING_POINT_LITERAL shift, and go to state 269 USER_DEFINED_INTEGER_LITERAL shift, and go to state 270 "co_yield" shift, and go to state 271 IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "auto" reduce using rule 722 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 272 additive-expression go to state 273 and-expression go to state 274 assignment-expression go to state 275 await-expression go to state 276 boolean-literal go to state 277 braced-init-list go to state 1198 cast-expression go to state 278 character-literal go to state 279 class-name go to state 55 compare-expression go to state 280 conditional-expression go to state 281 conversion-function-id go to state 282 decltype-specifier go to state 63 delete-expression go to state 283 enum-name go to state 71 equality-expression go to state 284 exclusive-or-expression go to state 285 expr-or-braced-init-list go to state 1326 expression go to state 1201 floating-point-literal go to state 287 fold-expression go to state 288 for-range-initializer go to state 1327 id-expression go to state 289 inclusive-or-expression go to state 290 integer-literal go to state 291 lambda-expression go to state 292 lambda-introducer go to state 293 literal go to state 294 literal-operator-id go to state 295 logical-and-expression go to state 296 logical-or-expression go to state 297 multiplicative-expression go to state 298 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 299 nested-name-specifier-opt go to state 90 new-expression go to state 300 noexcept-expression go to state 301 operator-function-id go to state 302 placeholder-type-specifier go to state 94 pm-expression go to state 303 pointer-literal go to state 304 postfix-expression go to state 305 primary-expression go to state 306 qualified-id go to state 307 relational-expression go to state 308 requires-expression go to state 309 shift-expression go to state 310 simple-template-id go to state 311 simple-type-specifier go to state 312 string-literal go to state 313 template-id go to state 314 template-name go to state 102 throw-expression go to state 315 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 316 unary-expression go to state 317 unary-operator go to state 318 unqualified-id go to state 319 user-defined-character-literal go to state 320 user-defined-floating-point-literal go to state 321 user-defined-integer-literal go to state 322 user-defined-literal go to state 323 user-defined-string-literal go to state 324 yield-expression go to state 325

State 1314

640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement ")" shift, and go to state 1328

State 1315

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 643 selection-statement"if" NOT-opt "consteval" compound-statement "else" statement 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1329 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1316

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 644 selection-statement"switch" "(" init-statement-opt condition ")" statement 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1330 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1317

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [")"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 139 class-name IDENTIFIER 140 | simple-template-id 213 declarator ptr-declarator 214 | noptr-declarator parameters-and-qualifiers trailing-return-type 215 declarator-id ELLIPSIS-opt id-expression 216 decltype-specifier "decltype" "(" expression ")" 248 enum-name IDENTIFIER 261 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 262 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 455 namespace-alias IDENTIFIER 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 493 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 494 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 495 | "(" ptr-abstract-declarator ")" 496 noptr-abstract-declarator-opt %empty ["(", "["] 497 | noptr-abstract-declarator 498 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 499 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 500 | "..." 501 noptr-declarator declarator-id attribute-specifier-seq-opt 502 | noptr-declarator parameters-and-qualifiers 503 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 504 | "(" ptr-declarator ")" 599 ptr-abstract-declarator noptr-abstract-declarator 600 | ptr-operator ptr-abstract-declarator-opt 603 ptr-declarator noptr-declarator 604 | ptr-operator ptr-declarator 605 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 606 | "&" attribute-specifier-seq-opt 607 | "&&" attribute-specifier-seq-opt 608 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 656 simple-template-id template-name "<" template-argument-list-opt ">" 708 template-name IDENTIFIER 725 type-name class-name 726 | enum-name 727 | typedef-name 743 typedef-name IDENTIFIER 744 | simple-template-id "..." shift, and go to state 935 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 936 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 496 (noptr-abstract-declarator-opt)] ")" reduce using rule 32 (abstract-declarator-opt) "[" reduce using rule 496 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 abstract-declarator go to state 704 abstract-declarator-opt go to state 1331 abstract-pack-declarator go to state 706 class-name go to state 55 declarator go to state 1332 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 707 noptr-abstract-declarator-opt go to state 708 noptr-abstract-pack-declarator go to state 709 noptr-declarator go to state 173 ptr-abstract-declarator go to state 710 ptr-declarator go to state 174 ptr-operator go to state 939 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1318

151 compound-statement "{" statement-seq-opt "}" 338 handler"catch" "(" exception-declaration ")" compound-statement "{" shift, and go to state 813 compound-statement go to state 1333

State 1319

155 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer $default reduce using rule 155 (condition)

State 1320

372 iteration-statement"do" statement "while" "(" expression ")" ";" ";" shift, and go to state 1334

State 1321

373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement ")" shift, and go to state 1335

State 1322

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "alignas", "(", "&", "[", "&&", "operator", "decltype", "*", "~"] 84 | attribute-specifier-seq 606 ptr-operator"&" attribute-specifier-seq-opt 614 ref-qualifier"&" ["["] "[" reduce using rule 83 (attribute-specifier-seq-opt) "[" [reduce using rule 614 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 349

State 1323

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "alignas", "(", "&", "[", "&&", "operator", "decltype", "*", "~"] 84 | attribute-specifier-seq 607 ptr-operator"&&" attribute-specifier-seq-opt 615 ref-qualifier"&&" ["["] "[" reduce using rule 83 (attribute-specifier-seq-opt) "[" [reduce using rule 615 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 352

State 1324

323 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator $default reduce using rule 323 (for-range-declaration)

State 1325

324 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" "[" shift, and go to state 1336

State 1326

325 for-range-initializerexpr-or-braced-init-list $default reduce using rule 325 (for-range-initializer)

State 1327

374 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement ")" shift, and go to state 1337

State 1328

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1338 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1329

643 selection-statement"if" NOT-opt "consteval" compound-statement "else" statement $default reduce using rule 643 (selection-statement)

State 1330

644 selection-statement"switch" "(" init-statement-opt condition ")" statement $default reduce using rule 644 (selection-statement)

State 1331

262 exception-declarationattribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt $default reduce using rule 262 (exception-declaration)

State 1332

261 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator $default reduce using rule 261 (exception-declaration)

State 1333

338 handler"catch" "(" exception-declaration ")" compound-statement $default reduce using rule 338 (handler)

State 1334

372 iteration-statement"do" statement "while" "(" expression ")" ";" $default reduce using rule 372 (iteration-statement)

State 1335

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1339 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1336

324 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 345 identifier-list IDENTIFIER 346 | identifier-list "," IDENTIFIER IDENTIFIER shift, and go to state 865 identifier-list go to state 1340

State 1337

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 374 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1341 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1338

640 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "}", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "namespace", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 641 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement "else" shift, and go to state 1342 "else" [reduce using rule 640 (selection-statement)] $default reduce using rule 640 (selection-statement)

State 1339

373 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement $default reduce using rule 373 (iteration-statement)

State 1340

324 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 346 identifier-listidentifier-list "," IDENTIFIER "," shift, and go to state 1025 "]" shift, and go to state 1343

State 1341

374 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement $default reduce using rule 374 (iteration-statement)

State 1342

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", BOOLEAN_LITERAL, CHARACTER_LITERAL, "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", FLOATING_POINT_LITERAL, "*", "default", "try", INTEGER_LITERAL, "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", POINTER_LITERAL, "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", USER_DEFINED_CHARACTER_LITERAL, USER_DEFINED_FLOATING_POINT_LITERAL, USER_DEFINED_INTEGER_LITERAL, "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 133 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 134 | class-key attribute-specifier-seq-opt base-clause-opt 136 class-key "class" 137 | "struct" 138 | "union" 139 class-name IDENTIFIER 140 | simple-template-id 144 class-specifier class-head "{" member-specification-opt "}" 177 cv-qualifier "const" 178 | "volatile" 182 decl-specifier storage-class-specifier 183 | defining-type-specifier 184 | function-specifier 185 | "friend" 186 | "typedef" 187 | "constexpr" 188 | "consteval" 189 | "constinit" 190 | "inline" 191 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 192 | decl-specifier decl-specifier-seq 212 declaration-statement block-declaration 216 decltype-specifier "decltype" "(" expression ")" 219 defining-type-specifier type-specifier 220 | class-specifier 221 | enum-specifier 230 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 231 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 232 | class-key simple-template-id 233 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 234 | elaborated-enum-specifier 241 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 245 enum-key "enum" 246 | "enum" "class" 247 | "enum" "struct" 248 enum-name IDENTIFIER 249 enum-specifier enum-head "{" enumerator-list-opt "}" 250 | enum-head "{" enumerator-list "," "}" 268 explicit-specifier "explicit" "(" constant-expression ")" 269 | "explicit" 332 function-specifier "virtual" 333 | explicit-specifier 380 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 381 | attribute-specifier-seq-opt "case" constant-expression ":" statement 382 | attribute-specifier-seq-opt "default" ":" statement 455 namespace-alias IDENTIFIER 456 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 461 namespace-name IDENTIFIER 462 | namespace-alias 463 nested-name-specifier "::" 464 | type-name "::" 465 | namespace-name "::" 466 | decltype-specifier "::" 467 | nested-name-specifier IDENTIFIER "::" 468 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 469 nested-name-specifier-opt %empty [IDENTIFIER] 470 | nested-name-specifier 507 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 565 placeholder-type-specifier type-constraint-opt "auto" 566 | type-constraint-opt "decltype" "(" "auto" ")" 641 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 652 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 653 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 654 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 656 simple-template-id template-name "<" template-argument-list-opt ">" 657 simple-type-specifier nested-name-specifier-opt type-name 658 | nested-name-specifier "template" simple-template-id 659 | decltype-specifier 660 | placeholder-type-specifier 661 | nested-name-specifier-opt template-name 662 | "char" 663 | "char8_t" 664 | "char16_t" 665 | "char32_t" 666 | "wchar_t" 667 | "bool" 668 | "short" 669 | "int" 670 | "long" 671 | "signed" 672 | "unsigned" 673 | "float" 674 | "double" 675 | "void" 676 statement labeled-statement 677 | attribute-specifier-seq-opt expression-statement 678 | attribute-specifier-seq-opt compound-statement 679 | attribute-specifier-seq-opt selection-statement 680 | attribute-specifier-seq-opt iteration-statement 681 | attribute-specifier-seq-opt jump-statement 682 | declaration-statement 683 | attribute-specifier-seq-opt try-block 688 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 689 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 storage-class-specifier "static" 691 | "thread_local" 692 | "extern" 693 | "mutable" 708 template-name IDENTIFIER 720 type-constraint nested-name-specifier-opt concept-name 721 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 722 type-constraint-opt %empty ["decltype", "auto"] 723 | type-constraint 725 type-name class-name 726 | enum-name 727 | typedef-name 737 type-specifier simple-type-specifier 738 | elaborated-type-specifier 739 | typename-specifier 740 | cv-qualifier 743 typedef-name IDENTIFIER 744 | simple-template-id 745 typename-specifier "typename" nested-name-specifier IDENTIFIER 746 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 782 using-declaration "using" using-declarator-list ";" 786 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 787 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 991 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 469 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 722 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 722 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 992 attribute-specifier-seq-opt go to state 993 block-declaration go to state 994 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 995 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 996 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1344 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1343

324 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" $default reduce using rule 324 (for-range-declaration)

State 1344

641 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement $default reduce using rule 641 (selection-statement)